我正在使用的应用程序遇到了一些难题,只是无法理解如何跳转到导航控制器堆栈中的特定视图控制器。
因此,要概述应用程序的结构。我正在使用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中都有您的工作清单可能有点多余?