2016-01-10 40 views
0

我的問題是,我有兩個視圖控制器,我需要將字符串從一個視圖控制器傳送到下一個。我已經從賽車上拿下了。實際的問題是,我需要在下一個視圖控制器中更改標籤,使其與前一視圖中按鈕的currentTitle匹配。是的,有多個按鈕。問題:通過segue傳輸視圖控制器取決於按下哪個按鈕

從圖1我的代碼是這樣的:

@IBAction func whichButtonWasClicked(sender: AnyObject) { 
    clickedButton = sender.currentTitle!! 
} 

// Segue - Pass the Data of which lesson was chosen 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    let DestViewController : Lesson = segue.destinationViewController as! Lesson 
    DestViewController.lessonPlan = clickedButton 
} 

我連接我所有的7個按鍵,以相同的一個動作。 的問題是,當我轉移視圖控制器,做...

print(lessonPlan) 

它不給我從動作按鈕的標題,因爲我想這動作是SEGUE後。是的,我測試了它,它是在賽後。所以它確實有效,它只是有點延遲,我需要它成爲賽格的一部分。

+0

你可以調用performSegue方法,在其中按鈕進行必要的設置後點擊。只是改變故事板中的segue與按鈕無關 –

回答

3

由於您的IBAction在prepareForSegue之後被調用,因此您可以使用程序化segues。

現在,您可能正在將按鈕從您的按鈕拖到下一個視圖控制器。相反,您可以從當前的視圖控制器拖動一個segue到下一個(請參閱this answer以獲得視覺指南)。這將創建一個程序化的繼續,你可以隨時觸發代碼。記得在Xcode中給segue一個標識符。

然後在whichButtonWasClicked之後,請在設置clickedButton之後撥打self.performSegueWithIdentifier("identifier you setin Xcode", sender: sender)以觸發segue。通過這樣做,你可以確保你的按鈕操作在segue開始之前被調用。

+0

這是OPs問題的一個很好的解決方案(投票) –

+0

非常感謝!我試了一下,效果很好。 –

相關問題