[英]Prepare for Segue in Swift with Sender
我試圖通過“顯示” segue將UIColor
傳遞給另一個viewController,以便背景的顏色可以匹配所選的顏色按鈕的顏色。 我有這段代碼可以打印按鈕發件人標記,但是它沒有執行該命令。
我究竟做錯了什么? 我以前從未使用過發件人標簽,因此可能有些愚蠢,但我不確定。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "toQuiz" {
if sender?.tag == 1 {
let viewController:ViewController = segue.destinationViewController as! ViewController
let color = UIColor.blueColor()
viewController.passedColor = color
} else if sender!.tag == 2 {
let viewController:ViewController = segue.destinationViewController as! ViewController
let color = UIColor.greenColor()
viewController.passedColor = color
} else if sender!.tag == 3 {
let viewController:ViewController = segue.destinationViewController as! ViewController
let color = UIColor.yellowColor()
viewController.passedColor = color
}
}
}
@IBAction func athButtonTapped(sender: AnyObject) {
let athleteQuiz = sender as! UIButton
print("Button \(athleteQuiz.tag) was pressed!")
}
@IBAction func actorButtonTapped(sender: AnyObject) {
let actorQuiz = sender as! UIButton
print("Button \(actorQuiz.tag) was pressed!")
}
@IBAction func musicButtonTapped(sender: AnyObject) {
let musicQuiz = sender as! UIButton
print("Button \(musicQuiz.tag) was pressed!")
}
這是情節提要板布局-它們均已正確連接,並且segue的標識符與情節提要中的標識符匹配。
要檢查的一些事情:
performSegueWithIdentifier(_:sender:)
的調用 而且,這是一個非常危險的代碼塊; 您不應該像這樣強迫發送者。 相反,請考慮執行以下操作:
guard let id = segue.identifier else { return } // Bail if there isn't a segue ID.
if id == "toQuiz" {
guard let tag = (sender as? UIView)?.tag else { return } // Bail if we can't get a tag.
// Continue examining the tag.
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.