iPhone UITableViewDelegate问题

时间:2009-12-16 20:28:43

标签: objective-c iphone uitableview

我有一个让我疯狂的基本问题。

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

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

当委托协议简单地由UITableViewController实现时,很容易:

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

我(显然)在委托类中不能这样做。 我怎样才能引用UITableViewController子类来访问navigationController?这让我疯了!


基本流程:

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

1 个答案:

答案 0 :(得分: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];