簡體   English   中英

使用Sender為Swift中的Segue做准備

[英]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的標識符與情節提要中的標識符匹配。

在此處輸入圖片說明

在此處輸入圖片說明

要檢查的一些事情:

  • IB中是否向左視圖控制器分配了您的類?
  • 究竟有什么觸發了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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM