如何在目标C中实现原始回调?
我只想在我的一个UITableViewCell对象(自定义单元格)检测到触摸时通知ViewController。
我需要通知我的RootViewController,以便它可以创建另一个ViewController的对象并将其推送到导航堆栈。
答案 0 :(得分:1)
您可以对secondVC使用如下所示的自定义init方法,并将_sender存储在全局变量或类变量中。喜欢
id sender;
- (id)initWithSender:(id)_sender { self = [super init]; if (self) { sender=_sender; } return self; }
secondvc=[[SecondVC alloc] initWithSender:self]; [[self navigationController] pushViewController: secondvc animated:YES];
在secondvc调用中检测到触摸时,这将通知rootvc在secondvc中检测到触摸。
[sender touchDetected];
答案 1 :(得分:0)
您可以覆盖表视图委托方法didSelectRowAtIndex: 检测触摸。然后你可以使用pushViewController推送视图控制器: 导航控制器的方法
答案 2 :(得分:0)
如果你引用的单元格对象是一个按钮,那么你可以通过[button addTarget:self action:@selector(methodYouWantToInvoke)];
答案 3 :(得分:0)
您需要将ViewController
设置为表格视图的委托,然后实施tableView:didSelectRowAtIndexPath:
方法。这是示例代码directly from Apple。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:NO];
BATTrailsViewController *trailsController = [[BATTrailsViewController alloc] initWithStyle:UITableViewStylePlain];
trailsController.selectedRegion = [regions objectAtIndex:indexPath.row];
[[self navigationController] pushViewController:trailsController animated:YES];
[trailsController release];
}