当我第一次设置我的应用程序时,我遇到了一些问题,让单个导航控制器工作。
每个标签项后面都有几个屏幕。我认为我遇到的问题是视图控制器会在错误的选项卡中显示,在它们之间切换时。我并不担心在每个标签中保持最后一个视图控制器的打开状态,实际上我隐藏了标签栏以暂时停止此操作。
所以目前我的每个标签都有导航控制器文件。我把它们分配到IB,在主窗口。
我就这样使用它们......
CategorySelTableViewController *nextController =
[[[CategorySelTableViewController alloc] initWithNibName:
@"CategorySelTableView" bundle:nil] autorelease];
nextController.hidesBottomBarWhenPushed = YES;
MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication]
delegate];
[delegate.billsndepsNavController pushViewController:nextController animated:YES];
但是,我有一些泄密。
我无法释放我的委托,导致错误。
我的同事建议我应该使用self.navigationcontroller
。
但这对我来说是一个很大的改变,我想在做出改变之前确定性地知道我做错了吗?
答案 0 :(得分:0)
当视图控制器被推入堆栈时,它有两种方法来访问导航控制器:
self.navigationController
。[UIApplication sharedApplication].delegate.navigationController
两者都是等价的,但第一个更短,所以它往往会被更多地使用。从一个切换到另一个没有任何好处。进行额外输入的唯一原因是当您不在推送视图控制器中时,例如:在独立GUI组件中使用的视图控制器,或者不是视图控制器的对象。
代理不应该被释放,因为它在应用程序的整个生命周期中都存在。