我試着以多種方式從我的unwind segue向後傳遞數據。看起來好像數據沒有被髮送,或者它在viewDidLoad()之後發送,所以我試圖設置的標籤沒有被更新。 unwind segue正在工作,下面我使用準備for segue並取得了一些成功,將之前的視圖控制器的標題更改爲「新標題」,但最後一行並未將nbaRotoHome.player設置爲「新玩家名稱」。Swift - 解繞Segue通過數據混淆
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "BuyStatsTapPager" {
let nav = segue.destination as! UINavigationController
let buyStatsTapPager = nav.viewControllers[0] as! BuyStatsTabPager
buyStatsTapPager.selectedPlayerBuyStats = selectedPlayer
buyStatsTapPager.buyStatsRef = self
}
if segue.identifier == "unwindToViewController1" {
var viewControllers: [UIViewController] = mainNavigationController.viewControllers as [UIViewController];
if(viewControllers.count == 3){
viewControllers.remove(at: viewControllers.count-2)
mainNavigationController?.viewControllers = viewControllers
}
let enteredContestViewController = viewControllers[viewControllers.count-1]
enteredContestViewController.title = "new title"
self.presentingViewController?.dismiss(animated: true, completion: nil)
let nbaRotoHome = segue.destination as! NBARotoHome
nbaRotoHome.player = "new player name"
}
回到我以前的視圖控制器我有
@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
}
而且看這個問題 Passing data with unwind segue 之後我也嘗試獲取數據在前面視圖控制器這樣
@IBAction func prepareForUnwind(segue: UIStoryboardSegue) {
if let sourceViewController = segue as? BuyStats {
playerNameLabel.text = sourceViewController.playerName
}
}
如果我需要添加更多的細節,我想要做什麼請問,我會編輯。我想問這個問題,但我在制定麻煩。
感謝您的答覆。然而,我仍然遇到麻煩。如果viewDidLoad()已被調用,那麼它如何更新新數據?假設我已經在viewDidLoad()中設置了一個標籤,現在我想在展開時對其進行更改。是否還有其他需要發生的事情(例如再次調用viewDidLoad()),還是重新分配變量所需的全部內容?我試過了,沒有任何運氣。 –
將更新標籤的代碼放入其自己的方法中。從viewDidLoad()調用該方法並從您調用prepareForUnwind的展開着陸點調用該方法。 – vacawama
用你的viewDidLoad代碼更新你的問題。 – vacawama