我想知道是否有可能在同一個按鈕分配兩種不同的展開方法。例如:多個展開在同一個按鈕 - 斯威夫特
我有這樣的觀點導航:
- 首頁 - > A-> B
- 首頁 - > C->乙
A和C的觀點導航到B,但後來我想使用相同的B視圖和控制器返回到先前的視圖。
有可能嗎?
我一直在考慮寫編程取決於什麼視圖來按鈕分配放開方法。
在此先感謝
對不起我的英語,不好。
我想知道是否有可能在同一個按鈕分配兩種不同的展開方法。例如:多個展開在同一個按鈕 - 斯威夫特
我有這樣的觀點導航:
A和C的觀點導航到B,但後來我想使用相同的B視圖和控制器返回到先前的視圖。
有可能嗎?
我一直在考慮寫編程取決於什麼視圖來按鈕分配放開方法。
在此先感謝
對不起我的英語,不好。
雖然,問題不是很清楚。但是我能理解的是,你要回到前一個視圖,即B> C或B> A,這取決於用戶來自哪裏。如果是這樣,那麼檢查UINavigationController。它會跟蹤導航歷史並自動添加後退按鈕。有點像我們瀏覽器中的後退按鈕。
這裏是一個教程,雖然有點老:Link
這裏是爲我工作以及迅速解決。下面的代碼僅適用於在故事板和代碼中正確連接您的賽段。結帳這page偉大的解釋設置放鬆segues。
總結:
您正在訪問從多個其他視圖同樣的觀點。因此,當您繼續瀏覽視圖時,您可以將源視圖控制器(您當前所在的視圖)傳遞給您要查看的視圖中的某個屬性。
在您認爲您將放鬆的情況下,您可以檢查持有您來自哪裏的信息(類)的財產,然後根據它的視圖執行繼續。
的代碼:(使用例如:主頁 - > A - > B或...主頁 - 「ç - > B)
注:B是將放鬆到多個不同視圖觀點。
在A或C:(代碼工作在兩個視圖中相同的方式)
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "segueIdentifierInViewAthatGoesToViewB" {
let controller:B = segue.destinationViewController as! B
//the code below passes our current view controller class to a property in view B.
//So, view B will know what view we came from.
//In our example, we're coming from view A or C
controller.viewControllerNavigatedFrom = segue.sourceViewController
}
}
在B:
//設置一個IBAction爲將檢查源視圖控制器(即我們通過當我們接觸到這個視圖時),並根據我們來自哪裏來執行segue。你可以把它連接到一個按鈕或任何你想要的東西。
// isKindOfClass(A) - 「A」將是你的類名
//setup a property to receive the view controller class where we are coming from
var viewControllerNavigatedFrom:AnyObject?
@IBAction func myButtonPressed(sender: AnyObject) {
if self.viewControllerNavigatedFrom!.isKindOfClass(A) {
//Unwind to view A
performSegueWithIdentifier("unwindFromBbackToA", sender: sender)
}
else if self.viewControllerNavigatedFrom!.isKindOfClass(C) {
//Unwind to view C
performSegueWithIdentifier("unwindFromBbackToC", sender: sender)
}
}
我想與開卷SEGUE做的,因爲更容易和更清潔的編程方式,但我認爲我會在做UINavigationContoller文檔說的方式。 非常感謝。 – vicmator 2015-03-03 08:21:15