在 UIViewController 类中使用“视图”时,Swift Playground 崩溃

Posted

技术标签:

【中文标题】在 UIViewController 类中使用“视图”时,Swift Playground 崩溃【英文标题】:Swift Playground Crashes When Using 'view' in a UIViewController Class 【发布时间】:2018-06-01 22:50:58 【问题描述】:

我在 Swift Playgrounds 应用程序中有以下代码,但是当我运行它时,我收到错误“Problem Running Playground”。我一步一步地运行代码,它似乎在view.backgroundColor = UIColor.red 上崩溃了。但是,这可以在 Xcode Playground 上完美执行。我的代码有问题还是 Swift Playgrounds 中的错误?

import UIKit
import PlaygroundSupport

class Test: UIViewController 
    override func viewDidLoad() 
        view.backgroundColor = UIColor.red
    


PlaygroundPage.current.liveView = Test()

【问题讨论】:

If语句中换行,看看视图是否不是nil 我包装它并逐步运行代码,显示视图!= nil,然后在尝试设置视图的背景颜色时崩溃。 如果代码在 Xcode 上运行并且只在 Swift Playground 上崩溃,那么您的代码就可以使用。正如你所说,操场上最可能的错误。 试试self.view.backgroundColor = UIColor.red 同样的错误。一定是最近 Swift Playgrounds 更新的错误。 【参考方案1】:

是的,这是 2018 年 4 月 30 日发布的 Playgrounds 2.1 中的一个错误。在之前的版本中这不是问题。

由于某种原因,viewDidLoad 中不存在视图,即使它应该存在。所以它崩溃了,因为它是 nil。

查看这篇文章,详细介绍问题和一些解决方法。

https://makeapppie.com/2018/05/07/bug-workaround-swift-playgrounds-for-ipad/

【讨论】:

以上是关于在 UIViewController 类中使用“视图”时,Swift Playground 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

在 NSObject 类中设置协议并在 UIViewController 类中调用它们

在非 UIViewController 类中呈现 UIAlertController 时如何隐藏状态栏?

从 UIViewController 类中隐藏自定义视图 UIButton

是否使用 getter 和 setter 将消息从父 UIViewController 传递到 UIView 类中的方法?

在 SwiftUI 类中调用包装的 UIViewController 函数时获得 nil

UIImageView 作为我的 UIViewController 类中 UIView 的子视图