2013-01-17 120 views
0

我遇到了一块砖墙,上面有一个正在处理的应用程序,我无法理解如何跳转到导航控制器中的特定视图控制器叠加。跳转到UINavigationController中的特定点

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

主屏幕 - 这是直接从服务器4最新工作的更新列表,并将其显示在一个表中,并且具有模态显示UINavigationController的一个按钮。

的UINavigationController

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

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

因此,通过主屏幕按钮导航作业>作业列表>作业详细信息不是一个问题,完美的作品。

我无法弄清楚如何在主屏幕上选择最新的工作更新之一时跳转到特定工作的详细信息。

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

谢谢。

回答

1

让你JobListViewController几个属性:

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

当您从主屏幕模式方式呈现,如果作业选择传中JobListViewController initialisedWithSelectedJob:

- (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; 
    } 

您必须重置initialisedWithSelectedJob,以便您可以从JobDetails屏幕返回,而不会被直接反弹回来。 )。

在您的JobListViewController的prepareForSegue中,您可以传递selectedJob id,就像您已经做过的一样。

更新

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

如果按照0x7fffffff的回答则导航是完全不同的,你是否选择从主屏幕或任务列表界面的工作。

我想知道你是否应该重新考虑你的设计一点 - 无论是在主屏幕上,并在JobListViewController或许有点多余让您的任务列表?

+0

这是一个很好的答案,并且在保持堆栈顺序的同时完美工作。我更喜欢使用'0x7fffffff'的方法,这需要我调整一些公平的东西。谢谢。我不确定主视图上的最新作业更新是多余的。这份简短清单与作业清单完全不同,可以按不同的顺序显示,并显示有关作业的不同信息。但是,感谢这个想法,它在设计时就考虑到了。 –

0

在Interface Builder你可以分配一个ID的视图控制器,你要推到:

enter image description here

然后,当用户选择“最新职业”,您可以使用以下方法来推具有该标识符的视图控制器。

UIViewController *detailController = [[self storyboard] instantiateViewControllerWithIdentifier:@"myID"]; 
[[self navigationController] pushViewController:detailController animated:YES]; 

当然,为了做到这一点,您必须在导航控制器中嵌入您的主视图控制器。

+0

感谢,我更喜欢'下面,因为它保持当前导航堆栈他Was'的方法。不过,我不知道如何使用Storyboard ID,所以这很有帮助。 –