我有一个带有MainView的CoreData应用程序,UITableViewController包含列表中的所有项目。我想要完成的是添加自定义后退按钮并使用popToViewController:animated:
访问设置。当我尝试使用此方法时,应用程序崩溃。在进行了大量阅读后,我意识到push和pop使用NSArray堆栈作为视图控制器。例如,当您使用pushToViewController:animated:
在另一个视图中添加{1}}时,rootView是视图0,依此类推。这一切都有道理。我学到的是你不能弹出到根视图后没有加载到堆栈中的视图。我的目标是弹出到设置视图。当我在AppDelegate.m中更改代码以使SettingsViewController成为rootViewController时,UITableViewController不再起作用,它无法告诉我实体“enityName”无法初始化。有没有办法让应用程序的CoreData部分正常运行并仍然弹出设置?我曾想过使用模态视图,但它破坏了应用程序的风格。
这对我来说很难解释,如果你不理解它的任何部分,请告诉我。 谢谢你的帮助。
更新:我在UINavigationBar文档中读到了您可以使用- (void)setItems:(NSArray *)items animated:(BOOL)animated
的内容,从而允许您手动设置推送和弹出视图控制器的数组。我只是想不通怎么做。我已经浏览了apple drillDown示例代码,但它没有我正在寻找的功能。
答案 0 :(得分:1)
也许你误解了Apple的导航控制器习语。它用于深入剖析视图的分层结构,并且可以轻松直观地前后移动。
此层次结构之外的视图(似乎您的设置视图属于此类别)应该以模态方式呈现。在iPad上,您甚至可以使用漂亮而方便的UIPopOverController
。
当然,如果你想保持自己的外观和感觉(会产生混淆用户的危险),你可以摆弄过渡动画。您可以使用Apple自己的,因此预先批准UIModalTransitionStyle
UIViewController
的{{1}}属性。
或者你可以尝试一下你现在所做的事情,并使用视图层次结构。也许你可以简单地通过顺序使用视图控制器来消除你的错误,而不是跳过它们之间的跳过控制器。在这种情况下,它应该足以使用
[self.navigationController pushViewController:controller animated:YES];
和
[self.navigationController popViewControllerAnimated:YES];
而不是容易出错的版本pushToViewController
和popToViewController
。