Objective c iPhone UITableViewDelegate问题

Objective c iPhone UITableViewDelegate问题,objective-c,iphone,uitableview,Objective C,Iphone,Uitableview,我有一个让我发疯的基本问题 我有一个从UITableViewController继承的类。它是我的导航控制器中的根控制器。我有另一个类实现UITableViewDelegate和UITableViewDataSource协议(我的委托) 基本上,在我的代理的tableView:didSelectRowAtIndexPath:method中,我想要推送一个新的控制器 当代理协议仅由UITableViewController实现时,很容易: [self.navigationController pu

我有一个让我发疯的基本问题

我有一个从UITableViewController继承的类。它是我的导航控制器中的根控制器。我有另一个类实现UITableViewDelegate和UITableViewDataSource协议(我的委托)

基本上,在我的代理的tableView:didSelectRowAtIndexPath:method中,我想要推送一个新的控制器

当代理协议仅由UITableViewController实现时,很容易:

[self.navigationController pushViewController:nextController animated:YES];
我(显然)不能在delegate类中这样做我该如何引用UITableViewController子类来访问navigationController?这让我发疯了


基本流程:

  • UITableViewController调用委托
  • 委托运行表视图:didSelectRowAtIndexPath:
  • 在代理的tableView:DidSelectRowatineXpath:中,代码需要将新控制器推送到navigationController上
  • 委托没有对navController或TableViewController的引用来执行推送
  • 如果我试图通过属性将tableController或navController传递给委托,则代码会给出一个编译器错误。因此,我无法将其引用回调用tableViewController

  • 您的
    UIApplicationLegate
    应具有对导航控制器的引用。实际上,您不需要对
    UITableViewController
    的引用

    您可以简单地执行以下操作:

    // Get the App delegate
    YourAppDelegate * app = (YourAppDelegate *)[[UIApplication sharedApplication] delegate];
    
    // Get the UINavigationController used by the application
    UINavigationController * nav = app.navigationController;
    
    // Push the next view controller
    [nav pushViewController:nextController animated:YES];
    

    一个更简单的解决方案可能是根本没有那个额外的类,只在根控制器类中实现表视图委托方法。我知道我忽略了一些简单的东西!我来自Java,所以关于如何组合事物的一些层次结构仍然是模糊的:)谢谢!