使用外部UITableViewDelegate并通过UIViewController回调到UINavigation控制器

时间:2011-03-15 01:06:51

标签: iphone cocoa-touch uitableview

我有UINavigation Controller,它将UIViewController压入堆栈并显示。

UIViewController有一个UITableView,并为该UITableView的数据源和委托使用外部类。我这样做是因为我需要动态交换该数据源。一切都很好地显示数据。

但是,在委托中处理didSelectRowAtIndexPath“down”时 我正在努力以正确的方式调用回到UINavigationController。当UIViewController和Delegates是同一个对象时,我习惯于做这样的事情:

ExampleViewController *newViewController = [[ExampleViewController alloc] init];
[self.navigationController pushViewController:newViewController animated:YES];
[newViewController release];

我不能从委托中这样做,我只是没有得到正确的引用回UINavigationController应该是pushViewController。

我是否需要设置类似于委托的ID,以便UITableViewDelegate有一个指针直接返回到UINavigationController?

1 个答案:

答案 0 :(得分:3)

只有已推送到导航堆栈的UIViewController实例才能通过“navigationController”属性方便地访问相应的UINavigationController实例。所以你有几个选择:

1)将对导航控制器的引用传递给您的表视图委托,以便他们可以调用您习惯使用的“推送”方法。

2)将对视图控制器的引用传递给表视图委托,并在用户点击表视图行时让它们调用方法。您可以编写自己的委托协议并在视图控制器中实现它,以正式化这种方法。

相关问题