2013-01-17 97 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,所以這很有幫助。 –