2015-06-11 178 views
0

我在網上查找了答案,但它似乎與導航控制器標題沒有任何關係。後退按鈕從屏幕消失

這是我的視圖控制器可視化:

enter image description here

當我觸摸初始表視圖的細胞(「選擇一個任務」),我通過一個模式SEGUE引導到導航控制器。

此導航控制器中的第一個視圖是「房間控制器」。

在這裏,我按另一個單元格,並通過模態segue導向「房間詳細信息」視圖。

在此處按'後退'後,「房間控制器」中不再有「後退」按鈕。它只是消失了。

爲什麼會發生這種情況,有人知道嗎?

+0

做導航欄和視圖控制器的標題保持不變,只有後退按鈕消失? – nburk

+0

從截圖中我們可以看到,您可能實例化了一個新的RoomController(有一個指向它的細節),而不是解除模式。這會讓你成爲一個沒有導航控制器的控制器作爲容器,因此失去了導航欄(和按鈕),但這只是推測,如果你可以發佈一些代碼,它肯定會有幫助。還有一件事......爲什麼不用推動來獲得所有這些免費的東西呢? – Alladinian

+0

它可能是當你解僱模式視圖控制器的後退按鈕實例,你正在使用它獲得釋放。使用push segue而不是modal會更好。當您從故事板中加載一些視圖時,將使用模態,這些視圖除了流程或獨立的XIB –

回答

2

什麼是實際發生的事情:

沒有後退按鈕了,因爲它具有室詳情作爲源和房間控制器爲目的地的SEGUE導致RoomController的另一個實例被實例化和呈現上屏幕。由於segue目的地是房間控制器,而不是導航控制器,因此不存在導航欄,因此沒有後退按鈕。

解決方案:

我建議你使用unwind segues的回去,沒有規律塞格斯因爲執行時,他們創建目標控制器的新實例。

或者,您可以通過編程方式從房間控制器中關閉房間細節控制器(即使用委派來獲得更大的靈活性)。

+0

這可能是正確的答案。一個小問題......不需要使用委託來解散,你只需在自己的電話上打電話解僱,如果需要,它會自動將消息轉發給其演示者 – Alladinian

+0

呈現視圖控制器負責解除其呈現的視圖控制器。由於當您在房間細節控制器中調用'dismissViewController:animated:completion'時,消息在導航堆棧內向下轉發,消息到達呈現視圖控制器並且結果相同。此外,如果用戶在房間細節控制器中更改了某些內容,並且這些更改需要在房間控制器中反映出來,那麼委派可能對未來有所幫助。 – Teo

+0

感謝您的詳細解答,非常有幫助 –

相關問題