我有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?
答案 0 :(得分:3)
只有已推送到导航堆栈的UIViewController实例才能通过“navigationController”属性方便地访问相应的UINavigationController实例。所以你有几个选择:
1)将对导航控制器的引用传递给您的表视图委托,以便他们可以调用您习惯使用的“推送”方法。
2)将对视图控制器的引用传递给表视图委托,并在用户点击表视图行时让它们调用方法。您可以编写自己的委托协议并在视图控制器中实现它,以正式化这种方法。