1

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

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

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

提前致谢。对于相当大的帖子感到抱歉,试图提供尽可能多的信息。

最好的问候,罗马

4

3 回答 3

1

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

于 2009-09-07T21:25:32.220 回答
1

我认为最好的实现是这样的:

假设您有一个存储数据的 Note 类。

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

于 2009-09-06T13:17:59.327 回答
1

是的,行为不端。Jongsma的回答是最好的。如果您想重新创建控制器,我发现这是可行的:

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

performSelectorOnMainThread将方法的执行延迟到下一次主循环运行,到那时之前的控制器已经被移除并且导航控制器处于稳定状态。

于 2009-09-06T15:44:28.720 回答