我有一个具有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
}
}
每个单元格中的按钮已作为其accessseryView添加到该单元格中,如下所示:
[cell setAccessoryView:testButton];
任何人都可以看到我做错了什么,以及如何解决这个问题?
答案 0 :(得分:0)
当您在循环[self buttonTouched:nil];
中进行呼叫时,您使用buttonTouched
作为nil
的值调用方法sender
。因此,buttonTouched
中的第一行将btn
设置为nil
,其余方法按nil按钮操作。
要么找到将实际按钮对象传递给buttonTouched
的方法,要么传递indexPath并找到正确的按钮。