iOS:UITableViewCell类中的按钮,用于在主UIViewController上调用方法

die*_*con 3 iphone objective-c uitableview ios

我有一个UITableView在我的类中MainViewController定义的自UITableCell定义CustomCell.我需要一个UIButton,在我的CustomCell班级,调用一个方法MainViewController.我无法创建新的实例,MainViewController因为该方法使用了一些变量,如果我创建了一个新实例,这些变量都将处于默认状态.我该怎么办??

这是我的代码:

MainViewController.m (这是我想要的方法):

-(void)updateLabels{
   double totalValue=0, personValue=0;
    [self returnTickArray];
    for(NSInteger i = 0; i < n; i++) {
        totalValue += ([[[self returnPricesArray] objectAtIndex:i] doubleValue] * [[[self returnQtyArray] objectAtIndex:i]doubleValue]);
        if([[[self returnPeopleArray] objectAtIndex:i]doubleValue]>0) personValue += ([[[self returnPricesArray] objectAtIndex:i] doubleValue] * [[[self returnQtyArray] objectAtIndex:i]doubleValue]/ [[[self returnPeopleArray] objectAtIndex:i]doubleValue] * [[[self returnTickArray] objectAtIndex:i]doubleValue]);
    }
    _totalValue.text = [NSString stringWithFormat:@"$ %.02lf", totalValue];
    _tip.text= [NSString stringWithFormat:@"$ %.02lf", totalValue*(([_tipPercentage.text doubleValue]/100))];
    _addedValue.text= [NSString stringWithFormat:@"$ %.02lf",([[_tip.text substringFromIndex:2] doubleValue]+totalValue) ];
    _perPerson.text=[NSString stringWithFormat:@"$ %.02lf", personValue];
}
Run Code Online (Sandbox Code Playgroud)

这是CustomCell.m按下按钮时调用的方法:

- (IBAction)tick:(UIButton *)sender {

    if ([sender isSelected]) {
        [sender setImage:[UIImage imageNamed:@"off"] forState:UIControlStateNormal];
        [sender setSelected:NO];
        _isTicked = [NSNumber numberWithInt:0];
    }
    else {
        [sender setImage:[UIImage imageNamed:@"on"] forState:UIControlStateSelected];
        [sender setSelected:YES];
        _isTicked = [NSNumber numberWithInt:1];
    }

}
Run Code Online (Sandbox Code Playgroud)

Dmi*_*kin 7

你可以从你的控制器的方法从UITableView的在你分配到一个按钮- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 的方法

[cell.yourButton addTarget:self action:@selector(updateLabels) forControlEvents:UIControlEventTouchUpInside];
Run Code Online (Sandbox Code Playgroud)

(只是不要忘记将按钮的IBOutlet添加到自定义单元类中)