我正在使用的应用程序遇到了一些难题,只是无法理解如何跳转到导航控制器堆栈中的特定视图控制器。

因此,要概述应用程序的结构。我正在使用Storyboard和Segues在视图之间导航。

主屏幕-从服务器中提取4个最新作业更新的列表,并将它们显示在表格中,并具有一个按钮,该按钮以模态显示UINavigationController。

UINavigationController

作业列表-从服务器中提取所有当前作业的列表,并将它们显示在表格中。选择单元格时,在jobid期间的作业详细信息中设置prepareForSegue:,然后将其压入堆栈。

作业详细信息-提取作业的所有详细信息(描述,照片等)并显示它们。

因此,通过主屏幕按钮>作业列表>作业详细信息导航作业不是问题,并且可以正常工作。

我不知道的是,在主屏幕上选择一项最新的工作更新时,如何跳至特定工作的详细信息。

我希望我已经解释够了。任何帮助将不胜感激。

谢谢。

最佳答案

在JobListViewController中做几个属性:

@property (assign) int initialisedWithSelectedJob;
@property (assign) int selectedJob;


从主屏幕以模态显示时,如果选择了作业,则将其传递到JobListViewController中的InitializedWithSelectedJob:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  {

   [(JobListViewController*)[segue.destinationViewController topViewController]
                                     setInitialisedWithSelectedJob:selectedJob];

}


然后在JobListViewController的viewDidLoad中:

if (self.initialisedWithSelectedJob)
    {
        self.selectedJob = initialisedWithSelectedJob;
        [self performSegueWithIdentifier:@"onToJobDetails" sender:self];
        self.initialisedWithSelectedJob == 0;
    }


您必须重置initializedWithSelectedJob,以便您可以从JobDetails屏幕返回此处,而不会再次被弹回。 )。

在JobListViewController的prepareForSegue中,您可以像已经进行的那样传递selectedJob ID。

更新

这样,您将从作业详细信息返回到JobListViewController。无论您是在主屏幕还是列表屏幕上选择作业,从主屏幕->作业列表屏幕->作业详细信息屏幕的移动都将保持一致。

如果您遵循0x7fffffff的答案,则无论是从主屏幕还是作业列表屏幕选择作业,导航方式都将大不相同。

我想知道您是否应该重新考虑一下您的设计-在主屏幕和JobListViewController中都有您的工作清单可能有点多余?

08-05 22:19