ios - 准备使用 Sender 在 Swift 中进行 Segue

标签 ios swift uibutton uistoryboardsegue sender

我试图通过“show”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!")
    }

这是 Storyboard布局 - 它们都已正确连接,并且 Segue 的标识符与 Storyboard中的标识符相匹配。

enter image description here

enter image description here

最佳答案

一些需要检查的事情:

  • 左 View Controller 是否在 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.
}

关于ios - 准备使用 Sender 在 Swift 中进行 Segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37420649/

相关文章:

ios - 如何在上传前在 iOS Share Extension 中缩小图像

ios - 用于电子邮件的 UITableview 单元格验证

ios - 如何为 TableView 中的 UIContextualAction 提供自定义宽度(滑动)

iphone - 如何在 UIButton 中从正常状态和选定状态下的标题文本设置 UIImage

ios - 突出显示 UIButton 出现不必要的延迟

ios - 回调中的类型推断错误

ios - AFNetworking header

ios - 如何在 iOS SDK 中从 Facebook 新闻提要中获取高分辨率照片

ios - 查找周末发生的所有核心数据条目(使用 NSDate)

objective-c - 如何将 UIButton 属性绑定(bind)到另一个属性?