我这里有这个 cellForRowAtIndexPath 方法:
- (UITableViewCell *)tableViewUITableView *)tableView cellForRowAtIndexPathNSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier"Cell" forIndexPath:indexPath];
if (cell.accessoryView == nil) {
cell.accessoryView = [[Checkbox alloc] initWithFrame:CGRectMake(0, 0, 25, 43)];
cell.accessoryView.opaque = NO;
cell.backgroundColor = [UIColor clearColor];
[(Checkbox*)cell.accessoryView addTarget:self actionselector(checkBoxTapped:forEvent forControlEvents:UIControlEventValueChanged];
}
NSString *sectionTitle = [contactSectionTitles objectAtIndex:indexPath.section];
NSArray *sectionContacts = [contactDirectoryFinal objectForKey:sectionTitle];
NSString *contacts = [[sectionContacts objectAtIndex:indexPath.row] valueForKey"item"];
cell.textLabel.text = contacts;
[(Checkbox*)cell.accessoryView setChecked: [[[sectionContacts objectAtIndex:indexPath.row] valueForKey"checkedItem"] boolValue] ];
return cell;
}
在这个方法里面,我有这行:
[(Checkbox*)cell.accessoryView addTarget:self actionselector(checkBoxTapped:forEvent forControlEvents:UIControlEventValueChanged];
调用这个方法
- (IBAction)checkBoxTappedid)sender forEventUIEvent*)event
{
}
我要做的是调整调用此方法的方式,因此我也传递了 int indexPath.row 编号
我开始这样做了:
[(Checkbox*)cell.accessoryView addTarget:self actionselector(checkBoxTapped:forEvent:rowNumber forControlEvents:UIControlEventValueChanged];
还有这个
- (IBAction)checkBoxTappedid)sender forEventUIEvent*)event rowNumberint)row
{
}
但我是选择器的新手,我的问题是我在哪里传递 rowNumber?
Best Answer-推荐答案 strong>
正如您发现的那样,您不能使用选择器传递任何值,只能传递发送者和事件。这就是为什么您需要另一种方式传递行号的原因。
一种方法是使用控件上的 tag 属性并使用 [sender tag] 检索它,但是如果在未调用 cellForRowAtIndexPath 的情况下更改了表索引,则此方法将失败。它也不适用于分段 TableView 。
更可靠的方法是使用 View 的位置来计算正确的行。 UITableView 有一个方便的方法来做到这一点:
- (IBAction)checkBoxTappedid)sender forEventUIEvent*)event {
CGPoint checkBoxPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:checkBoxPosition];
}
关于ios - Objective-C 将 tableView indexPath 传递给另一个方法,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/34813538/
|