UINavigationController并在一个级别内切换next-prev项目

时间:2009-09-06 13:06:50

标签: iphone uinavigationcontroller

任何人都可以帮我解决下一个问题。我正在使用类似于Notes应用程序的导航的应用程序。我面临的问题是如何在一个级别内实现导航并将根视图保持为前一个屏幕。所以我需要实现的场景: 1.从顶级列表向下钻取到详细视图。 2.从此详细视图导航到下一个/上一个项目的详细视图。 3.后退按钮应该指向根视图。

我尝试了几种方法,没有人为我工作。从我的观点来看,最正确的解决方案是在根和详细控制器之间创建一个中间控制器来处理下一个/ prev重定向。但这里的主要问题是从一个详细视图切换到另一个导航窗格保持不变,因此它不参与动画,无论Notes应用程序在这种情况下是否正常工作。

你能指出我在这种情况下如何更好地安排控制器互动吗?

提前致谢。对不起,相当重要的帖子,试图尽可能提供信息。

祝你好运, 罗马

3 个答案:

答案 0 :(得分:1)

我认为最好的实施就是这样:

假设您有一个Note类,用于存储数据。

您可以拥有两个视图控制器,一个包含注释列表,另一个包含详细信息。 这两个都可以添加到导航控制器。 然后,当您想切换到下一个音符时,以某种方式检索该对象并使用-setNote:call将其分配给您的详细控制器。该方法将负责更改出口的显示内容。

答案 1 :(得分:1)

是的,这是行为不端的行为。 Jongsma的回复是最好的。如果你想重新创建控制器,我发现这个工作:

[parent performSelectorOnMainThread:@selector(showMyItem:)
                         withObject:myNextItem 
                      waitUntilDone:NO];
[self.navigationController popViewControllerAnimated:NO];

performSelectorOnMainThread延迟执行该方法,直到下一次运行主循环,然后前一个控制器已被移除,导航控制器处于稳定状态。

答案 2 :(得分:1)

我已经解决了这个问题 - 它足以弹出当前视图并推送新视图,为列表中的下一个对象创建。要记住的唯一想法是在pop调用之前保存对导航控制器的引用,因为在self.navigationController之后变为nil。