0

我有一个具有 tableView 的 UITableViewController。每个单元格都有一个按钮,可以像复选框一样选择/取消选择,并且执行此操作的方法运行良好。我想有另一种方法,由 tableheaderview 中的按钮调用,该方法能够遍历此列表并一举选择所有按钮。具有讽刺意味的是,我能够执行迭代,但似乎无法调用选择/取消选择按钮的方法。

这是我的相关代码:

//This is my method does the iteration
- (void) startWizard {

    NSLog(@"Did it select?");

    for (int i = 0; i < [self.tableView numberOfSections]; i++) {
        for (int j = 0; j < [self.tableView numberOfRowsInSection:i]; j++) {
            NSUInteger ints[2] = {i,j};
            NSIndexPath *indexPath = [NSIndexPath indexPathWithIndexes:ints length:2];
            UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
            //Here is my code to call the method that selects/deselects
            [self buttonTouched:nil];



        }
    }
}

这是对每个按钮进行实际选择/取消选择的方法(并且工作正常):

-(void)buttonTouched:(id)sender
{
    UIButton *btn = (UIButton *)sender;

    if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"CheckBox1.png"]])
    {
        [btn setImage:[UIImage imageNamed:@"CheckBox2.png"] forState:UIControlStateNormal];
        // other statements
    }
    else
    {
        [btn setImage:[UIImage imageNamed:@"CheckBox1.png"] forState:UIControlStateNormal];
        // other statements
    }

}

每个单元格中的按钮已作为其 accesseryView 添加到该单元格,如下所示:

[cell setAccessoryView:testButton];

谁能看到我做错了什么,以及如何解决这个问题?

4

1 回答 1

0

当您在循环中调用时,您使用as 的值[self buttonTouched:nil];调用该方法。因此, set to中的第一行和其余方法对 nil 按钮进行操作。找到一种方法将实际按钮对象传递给或传递 indexPath 并通过它找到正确的按钮。buttonTouchednilsenderbuttonTouchedbtnnilbuttonTouched

于 2013-01-08T17:43:02.783 回答