它不起作用,因为您在单击按钮时没有选择行。
使用两个按钮,我会将您的 segues 与按钮断开连接,并在 IB 中执行 2 个手动 segues,然后添加类似的代码来处理它们:
-(void)button1Pressed:(id)sender {
UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];
NSIndexPath *clickedButtonIndexPath = [self.homeTableView indexPathForCell:clickedCell];
...
[self performSegueWithIdentifier:@"YourManualSegueIdentifier1" sender:self];
}
编辑第二个选项:
在您的 MyTableViewCell.h 中:
@interface MyTableViewCell : UITableViewCell
...
@property (strong, nonatomic) NSIndexPath *cellIndexPath;
...
@end
在您的 MyTableViewCell.m 中:
-(void)button1Pressed:(id)sender {
...
NSInteger row = cellIndexPath.row;
...
}
在您的 MyTableViewController.m 中:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[MyTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// remember index here!
[cell setCellIndexPath:indexPath];
....
return cell;
}