2015-04-06 79 views
0

此問題適用於我對MBPlacePickerController進行的更新。爲backButton目的檢測視圖層次結構的正確方法是什麼?

我正在構建自定義視圖控制器,有時會在其自己的UINavigationController中以模態方式顯示,而其他時間會推送到現有的導航控制器堆棧上。

如果我的視圖控制器以模態方式呈現,我想顯示自己的「完成」按鈕,而不是右側的後退按鈕和左側的第二個按鈕。

如果視圖控制器顯示在導航堆棧上,我想顯示默認的後退按鈕,然後我想要顯示右側的其他按鈕。

我試圖找出檢測視圖控制器層次結構的最佳方法,但也許「正確」的方法是檢查前一個視圖控制器本身的後退按鈕,然後適當地設置navigationItem 。

任何人都可以點亮一下嗎?

編輯:

爲清楚起見,我正在更新我的MBPlacePickerController庫,它是在GitHub上。我使用導航控制器來顯示「自動」和「完成」按鈕,所以我總是需要一個導航控制器。唯一的問題是如果地方選擇器控制器提供導航控制器(在這種情況下將以模態方式顯示),或者如果地方選擇器被推入另一個導航控制器。

問題是如何呈現後退按鈕。我是否使用完成按鈕或使用內置的後退按鈕?我試圖找出檢測這個問題的最佳方法。基本上,如果我嘗試將位置選取器推到現有的導航控制器層次結構上,我不想顯示完成按鈕。如果我在一個新的視圖控制器中,我需要顯示我自己完成的按鈕。

另外,我需要檢測正確的方法來解除我的視圖控制器,如果我有完成按鈕。 (這很簡單,因爲我可以假設,如果完成按鈕在那裏,我們不使用後退按鈕,並且我可以關閉模​​態呈現的導航控制器。)

+0

你可以在模態上引入你的自定義視圖控制器(不在導航控制器堆棧中),然後讓你的「完成」按鈕簡單地關閉當前的視圖控制器?然後您將返回到您來自的前一個視圖控制器(和導航控制器堆棧)。 –

+0

是什麼問你如何確定你的ViewController被推送或模態顯示!?我對「在其自己的UINavigationController模塊中顯示」部分感到困惑,是已經工作或想要實現的東西? – luk2302

+0

爲了清晰起見進行了編輯。 – Moshe

回答

1

如果您(視圖控制器在問題中)是在導航層次結構中,您有一個非零navigationController。如果您以模態形式呈現,則您有非零presentingViewController。因此,你知道你在哪,並且可以相應地修改你的界面。

+0

這類作品適合我。 (有關更多信息,請參閱我的更新。)我想我需要檢查位置選取器控制器的內部導航控制器上的'presentsViewController'。 – Moshe

相關問題