Iphone 跳转到导航堆栈中的某个点

Iphone 跳转到导航堆栈中的某个点,iphone,objective-c,ios,uinavigationcontroller,Iphone,Objective C,Ios,Uinavigationcontroller,仅仅是在一点建议和正确方向的推动下 我有一个带有导航控制器的模态视图,其中包含3个级别(视图): 我的活动作业(从服务器中提取用户活动作业的列表并显示为表格,选择一个作业,然后向视图2传递作业ID并显示) 作业详细信息(根据服务器上的作业ID提取作业详细信息及其更新列表,选择一个更新,并向视图3传递更新ID并显示) 更新详细信息(根据服务器上的updateID和附加到该更新的任何照片提取更新的详细信息,选择一张照片,它将全屏显示 因此,我在应用程序的不同部分有一个单独的模式视图,其中显示作业的最

仅仅是在一点建议和正确方向的推动下

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

  • 我的活动作业(从服务器中提取用户活动作业的列表并显示为表格,选择一个作业,然后向视图2传递作业ID并显示)

  • 作业详细信息(根据服务器上的作业ID提取作业详细信息及其更新列表,选择一个更新,并向视图3传递更新ID并显示)

  • 更新详细信息(根据服务器上的updateID和附加到该更新的任何照片提取更新的详细信息,选择一张照片,它将全屏显示

  • 因此,我在应用程序的不同部分有一个单独的模式视图,其中显示作业的最新更新。这包括分配给用户的新作业和活动作业的新更新

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

    因此,我的想法是在选择最新更新时调用活动作业模式视图,并传递相关ID,初始化堆栈中所需的视图组合,将ID传递给视图,然后使用SetViewController:animated:方法初始化导航控制器

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


    任何帮助或建议都将不胜感激。

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

    通过这种方式,无论您是否知道下一个id,您都在使用相同的代码。您使用的是用户选择的id,或者是其他选择已经预定义的id