Iphone - 在UITableViewCell中单击按钮时,将视图控制器推送到导航堆栈

时间:2010-02-09 22:53:34

标签: iphone uitableview messaging

当在我的应用程序的一个表视图单元格中按下某个按钮时,我需要将某个视图控制器推到导航堆栈上。

这可以通过使用NSNotification的实例来通知表视图的控制器按下按钮。但这将是非常重量级的,特别是因为应用程序中的选项卡栏中的选择可能导致表视图出现或消失,从而产生额外的开销,因为各种表视图在它们被选项卡打开或关闭屏幕时注册和取消注册。

有人能想到更好的解决方案吗?

3 个答案:

答案 0 :(得分:2)

为什么不放

[[self navigationController] pushViewController:targetViewController animated:YES];

在按钮调用的方法中?

答案 1 :(得分:0)

让你的UITableViewController使用UITableViewDelegate Protocol并实现这个方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

从indexPath中,您可以获取已按下的行,然后您知道正在选择哪个单元格。 UITableViewController的目的是了解单元格,单元格本身不需要按钮来触发事件来推送新视图。

答案 2 :(得分:0)

我所做的是将表视图的委托设置为与其控制器相同。然后:

UITableView *myTableView = (UITableView *)self.superview;
NSIndexPath *indexPath = [myTableView indexPathForCell: self];
MyTableViewController *myTableViewController = (MyTableViewController *)(myTableView.delegate);
[myTableViewController buttonWasPressedOnCellWithIndexPath: indexPath];