gpt4 book ai didi

ios - Swift - 在 prepareForSegue 方法中使用 Switch 语句

转载 作者:可可西里 更新时间:2023-11-01 02:23:32 25 4
gpt4 key购买 nike

我设置了以下 switch 语句,以处理 3 种不同的按钮点击:石头、布、剪刀。例如,点击 Rock 按钮,您将转到 ResultViewController,并显示“rockSegue”信息。

每次我运行应用程序,然后点击其中一个按钮(例如摇滚)时,它会在转换到 ResultViewController 时崩溃,说在展开可选值时 resultImage 包含 nil。它引用的 Assets 肯定存在,所以我对我在这里做错了什么有点困惑?

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let controller = segue.destinationViewController as ResultViewController
switch segue.identifier! {
case "rockSegue":
controller.resultImage!.image = UIImage(named: "PaperCoversRock")
controller.resultLabel!.text = "You lose"...(continued)

按钮包含以下代码:

  @IBAction func rockButton() {
performSegueWithIdentifier("rockSegue", sender: self)
}

最佳答案

这一行:

controller.resultImage!.image = UIImage(named: "PaperCoversRock")

在将生成的 UIImage 分配给其 image 属性之前,尝试强制(由于“!”)展开 resultImage

因为 resultImage 是一个 nil ,无论图像是否存在,你都会得到异常,因为它不能解包以访问它的 image属性。

resultImage 必须在运行上面的行之前初始化

更新:

此时,当您获得目标 Controller 时,它已被初始化,但由于尚未访问 Controller 的 View (这会触发 viewDidLoad 和网点)。

所以你可以:

  1. 将图像名称作为属性存储在目标 Controller 中,并在 Controller 的 viewDidLoad() 方法中设置图像

  2. 访问 Controller 的 View (即使只是读取它)它会触发 Controller 的 View 创建流程(对此不太确定,但我在某处读到它是可能的)

关于ios - Swift - 在 prepareForSegue 方法中使用 Switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29258437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com