2012-01-16 50 views
2

我在我的應用程序中使用UISegue來自動在視圖控制器之間轉換。我會打電話給他們A和B.UIStoryboard popViewController

它按預期工作,但是當我想從B彈回到A時,我試圖撥打 [self.navigationController popViewController]但是B的navigationController屬性報告爲空。


作爲第二次嘗試,我試圖映射一個按鈕,一個UISegue回視圖控制器A.
然而,這只是創建一個新的視圖控制器。

作爲工作的時候,我終於實現了爲周圍的工作是檢索從UIStoryboard的,並呼籲[A.navigationController pushViewController:B]

在這一點,稱[B.navigationController popViewController]發揮預期。

這似乎是錯誤的,從故事板賽格瑞我怎麼能返回到前一個視圖控制器?

+1

是「推」式的延續? – barley 2012-01-16 22:34:45

+0

這是一種推式呀 – Onedayitwillmake 2012-01-17 05:35:09

回答

2

我不知道你的A和B控制器的類(無論是UIViewController,UITableViewController還是UINavigationController),但是如果你遵循下面的模式,它應該可以工作。

  • 在空的故事板中插入一個UINavigationController。這會爲故事板帶來兩個窗口,並與一個箭頭(一個segue)相關聯。右邊的一個應該是控制器A

  • 在A,比方說,你添加一個按鈕。該按鈕會將B推入導航堆棧。

  • 然後,從控制器A到控制器B按鈕添加第二個控制器B,並拖動,然後從彈出的菜單中選擇「推」。

如果您只使用UIViewController(A)並按下B,則沒有navigationController負責彈出窗口。

希望有所幫助。

+1

如果您已經擁有UIViewController,則無需在UINavigationController中拖動並將其設置爲up。相反,選擇UIViewController並轉到編輯器菜單並選擇嵌入並選擇UINavigationViewController,這將爲您設置一切。 – 2012-02-07 00:34:29

+0

@ Scott Sherwood。這是一個很好的竅門。我不知道。但有一個問題。當我在故事板中這樣做時,Xcode自動將我的viewController變成一個navController和一個viewController,並與一個segue鏈接。那麼它不是基本上是一回事嗎? – Canopus 2012-02-07 01:12:55

+0

是的,它只是一點點捷徑而已。 navController和viewController之間的鏈接被稱爲關係,並且與Segue稍有不同,但原則上你留下的內容與你的建議相同。 – 2012-02-07 09:29:54