一尘不染

iOS 8 Beta Today扩展小部件未在Swift应用中显示?

swift

今天,扩展程序未在Swift应用程序中显示,但在Objective C应用程序中显示。

我要做的就是在故事板上添加一个UILabel,其中包含一些内容,用于快速,客观的c应用程序。

它是在我运行Objective C应用程序时显示的,而在我执行Swift应用程序时却没有显示。

我在这里想念什么吗?


阅读 195

收藏
2020-07-07

共1个答案

一尘不染

您可以注释掉提供的init方法。

//    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
//        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
//        // Custom initialization
//    }

这将使您的扩展程序正常运行。这个问题似乎是由Swift和Objective-C之间的初始化行为不同引起的。删除上述初始化器将继承超类的所有必需初始化器。

在Apple开发人员论坛上找到了该解决方案,以供您参考。

注意:Clean and Build执行此操作后,您可能需要对项目进行更改才能生效

该扩展程序实际上是 崩溃的 ,并显示如下错误:

fatal error: use of unimplemented initializer 'init(coder:)' for class 'com_blabla_blabla_MyTodayExtension.TodayViewController'

这表明另一个选择是实现:

init(coder aDecoder: NSCoder!) {
    super.init(coder: aDecoder)
    // Custom initialization here
}

如果您想保留执行自定义初始化的能力。

2020-07-07