2009-12-16 65 views
1

我有一个基本问题让我发疯。iPhone UITableViewDelegate问题

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

基本上,在我委托的tableView:didSelectRowAtIndexPath:方法中,我想推新控制器。

当委托协议是简单地由执行的UITableViewController,很容易:

[self.navigationController pushViewController:nextController animated:YES]; 

我(显然)不能这样做,在委托类。 我该如何引用UITableViewController子类来访问navigationController?这让我疯狂!


基本流程:

  1. 的UITableViewController电话委托
  2. 委托运行的tableView:didSelectRowAtIndexPath方法:
  3. 在代理的的tableView:didSelectRowAtIndexPath方法:,代码需要推新控制器到navigationController
  4. 委托没有引用navController或TableViewController来执行推送。
  5. 如果我尝试通过属性传递给委托tableController或navController,代码会给出编译器错误。所以,我不能给它一个参考返回到调用tableViewController
+0

一个简单的解决方案可能是没有额外的类在所有的,只是实现你的根控制器类表视图委托方法。 – 2009-12-16 20:56:45

回答

0

您的UIApplicationDelegate应该有一个对导航控制器的引用。您实际上并不需要参考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]; 
+0

*甩额头* 我知道我俯视的东西很容易!我是从Java进来的,所以关于如何放在一起的一些层次结构仍然是模糊的:) 谢谢! – John 2009-12-16 21:00:35