跳转到导航堆栈中的某个点
Posted
技术标签:
【中文标题】跳转到导航堆栈中的某个点【英文标题】:Jumping to a point in a navigation stack 【发布时间】:2011-03-21 23:16:37 【问题描述】:在真正得到一些建议并朝着正确的方向前进之后。
我有一个带有导航控制器的模态视图,其中包含 3 个级别(视图):
我的活动作业(从服务器中拉出用户活动作业列表并显示为表格,选择作业并将视图 2 传递给作业 ID 并显示)。
Job Details(根据 jobID 从服务器拉取作业详细信息及其更新列表,选择更新,视图 3 传递 updateID 并显示)。
更新详情(根据来自服务器的 updateID 和附加到该更新的任何照片拉取更新的详细信息,选择一张照片并显示全屏。
所以我在应用程序的不同部分有一个单独的模式视图,它显示作业的最新更新。这包括分配给用户的新作业和活动作业的新更新。
当在最新更新模式窗口中选择一个项目时,我想做的是直接链接到导航控制器中的相关视图。
所以我的想法是在选择最新更新时调用活动作业模式视图并传递相关 ID,初始化堆栈中所需的视图组合,将 ID 传递给视图,然后初始化带有 setViewControllers:animated: 方法的导航控制器。
这是最好的方法,还是有更好的方法?
任何帮助或建议将不胜感激。
【问题讨论】:
【参考方案1】:我认为没有理由重复为视图控制器创建视图的功能。您可以做的一件事是为每个元素(jobId 和 updateId)设置一个“缓存”。如果您想一次推送多个 viewController,您可以使用所需的值填充缓存。然后,当您将 viewController 推送到 navigationController 上时,新控制器将检查缓存,如果缓存了某些内容,您只需直接推送下一个视图控制器。这一切都会很快发生,用户应该不会注意到。
通过这种方式,无论您是否知道下一个 id,您都在使用相同的代码。您要么使用用户选择的 id,要么使用其他选择已经预定义的 id。
【讨论】:
以上是关于跳转到导航堆栈中的某个点的主要内容,如果未能解决你的问题,请参考以下文章