【发布时间】:2009-07-28 22:27:14
【问题描述】:
我使用UIViewController 在两个不同的地方列出项目。一个地方是它的默认主页,另一个地方是另一个控制器将其推送到导航堆栈以查看项目列表的地方。
这两个地方都允许您通过单击导航栏中的添加按钮来添加新项目。该列表的行为是基于一个名为targetController 的NSObject * 决定的,该targetController 由其调用者设置为其self 引用,否则默认为nil。
我遇到了一个问题,如果您让它们同时显示在 tabBar 的单独选项卡中,则导航栏 title/rightBarButtonItem 会在第一个调用的选项卡上消失。我终于发现,每当推送列表的视图导致 navigationItem 被删除时,导航栏正在替换 items 堆栈。
我唯一的解决方案是在按下 tabBar 按钮项时强制弹出列表视图。 有更好的方法吗?
顺便说一句,我选择在 2 个不同的地方使用相同的控制器以避免重复的功能,从而减少代码。
【问题讨论】:
-
您是否在两个地方都显示了相同的控制器实例?
-
是的,我使用根标签栏控制器来保存对每个实例的引用,以便延迟加载它们。我想我可以使用不同的实例,但我已经通过使用根标签栏解决了这个问题选择选项卡项时的 popToRoot。