我在这个tableView上有一个tableView和tableViewCell。我为tableViewCell定义了另一个类,称为CustomCell,以便对必需的自定义进行编码,并在此单元格上创建一个按钮。单击tableViewCell上的按钮时,我想了解哪个tableViewCell包含该按钮,以便仅对该单元格(包含单击的按钮)进行必要的更改]
我如何理解哪个tableViewCell包含被单击的按钮?
实现此目的的一种策略是将带有行号的标签分配给按下的按钮:
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexpath {
YourCustomCell *cell = // Code
cell.button.tag = indexPath.row;
// Other cell preparation code
return cell;
}
然后,在按钮的操作中,您可以看到其标签是什么以确定与之对应的模型对象:
- (void)didSelectButton:(id)sender {
UIButton *button = sender;
NSInteger tag = button.tag;
YourModelObject *item = self.items[tag];
// Continue with the business logic for what should
// happen when that button is pressed.
}
如果将附件详细信息按钮替换为自定义按钮,则可以调用annexantButtonTappedForRowWithIndexPath:方法。
示例-将其放在cellForRowAtIndexPath中(设置单元格时:)>]
UIButton *myAccessoryButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 125, 24)]; [myAccessoryButton setImage:[UIImage imageNamed:@"yourImage.png"] forState:UIControlStateNormal]; [cell setAccessoryView:myAccessoryButton]; [myAccessoryButton release]; cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
然后作为单独的方法:
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath: (NSIndexPath *)indexPath
{
//do something
}
怎么样...
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
尝试一下,您可以知道在此方法中单击的单元格的节和行号:-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {}
您需要以这种方式调用此cellForRowAtIndexPath
方法。