跳到导航堆栈中的某个点

时间:2011-03-21 23:16:37

标签: iphone objective-c ios uinavigationcontroller

刚刚提出一些建议,并朝着正确的方向前进。

我有一个模态视图,导航控制器包含3个级别(视图):

  1. 我的活动作业(从服务器中提取用户活动作业的列表并显示为表格,选择作业,视图2传递给作业ID并显示)。

  2. 作业详细信息(根据服务器上的jobID提取作业详细信息及其更新列表,选择更新,视图3通过updateID并显示)。

  3. 更新详细信息(根据服务器中的updateID以及附加到该更新的所有照片提取更新的详细信息,选择一张照片并显示全屏。

  4. 所以我在应用程序的不同部分有一个单独的模态视图,显示作业的最新更新。这包括分配给用户的新作业和活动作业的新更新。

    我想要做的是在最新更新模式窗口中选择项目时直接链接到导航控制器中的相关视图。

    所以我的想法是在选择最新更新时调用Active jobs模式视图并传递相关ID,初始化堆栈中所需的视图组合,将ID传递给视图然后初始化导航控制器与setViewControllers:animated:方法。

    这是最好的方法,还是有更好的方法?

    非常感谢任何帮助或建议。

1 个答案:

答案 0 :(得分:0)

我没有理由重复为视图控制器创建视图的功能。您可以做的一件事是为每个元素(jobId和updateId)设置一个“缓存”。如果要一次推送多个viewControllers,则可以使用所需的值填充缓存。然后,当您将viewController推送到navigationController时,新控制器将检查缓存,如果有缓存的内容,您只需直接推送下一个视图控制器。这一切都会很快发生,对用户来说应该是不明显的。

通过这种方式,您使用相同的代码,无论您是否知道下一个ID。您要么使用用户选择的ID,要么使用已经由其他选择预定义的ID。