【问题标题】:Crash when assigning rootViewController in the AppDelegate programmatically以编程方式在 AppDelegate 中分配 rootViewController 时崩溃
【发布时间】:2016-02-13 12:48:16
【问题描述】:

我没有使用情节提要,所以我在AppDelegate 中遇到了问题。看起来很简单,但我无法解决问题。

我的Appdelegate.swift文件代码如下。

window = UIWindow(frame: UIScreen.mainScreen().bounds)
window?.backgroundColor = UIColor.whiteColor()
window?.rootViewController = LineChartViewController(coder: NSCoder.init())
window?.makeKeyAndVisible()

我的自定义LineChartViewController.swift 文件代码如下。

required init?(coder aDecoder: NSCoder)
    {
        super.init(coder: aDecoder)
        centralManager = CBCentralManager(delegate: self, queue: dispatch_get_main_queue())
    }

运行此代码后,我收到一条错误消息“decodeObjectForKey: cannot be sent to an abstract object of class NSCoder: Create a concrete instance!'

你能帮帮我吗?

【问题讨论】:

    标签: ios swift appdelegate nscoder


    【解决方案1】:

    你不想在这里使用NSCoding

    NSCoding 用于归档和取消归档对象到 NSData 格式,您只想创建一个新的 LineChartViewController 实例。

    因此,当您设置rootViewController 时,您要执行以下操作:

    window?.rootViewController = LineChartViewController()
    

    要进行设置,您应该覆盖 viewDidLoad():

    override func viewDidLoad() {
        super.viewDidLoad()
        centralManager = CBCentralManager(delegate: self, queue: dispatch_get_main_queue())
    }
    

    【讨论】:

    猜你喜欢
    • 2014-01-13
    • 1970-01-01
    • 2012-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多