在Objective C中实现基本回调

时间:2011-02-25 08:43:33

标签: iphone objective-c

如何在目标C中实现原始回调?

我只想在我的一个UITableViewCell对象(自定义单元格)检测到触摸时通知ViewController。

我需要通知我的RootViewController,以便它可以创建另一个ViewController的对象并将其推送到导航堆栈。

4 个答案:

答案 0 :(得分:1)

您可以对secondVC使用如下所示的自定义init方法,并将_sender存储在全局变量或类变量中。喜欢

id sender;

- (id)initWithSender:(id)_sender
{
    self = [super init];
    if (self) {
        sender=_sender;
    }
    return self;
}
从RootVC初始化secondvc如下,并定义一个名为 - (void)touchDetected的方法;在rootvc。

    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];
}