【问题标题】:iOS 8 Beta Today extension widget not showing in a Swift app?iOS 8 Beta Today 扩展小部件未显示在 Swift 应用程序中?
【发布时间】:2014-07-27 07:15:32
【问题描述】:

Today 扩展不会出现在 Swift 应用程序中,但会出现在 Objective C 应用程序中。

我所做的是在情节提要上为 swift 和客观的 c 应用程序添加带有一些内容的 UILabel。

它在我运行 Objective C 应用程序时出现,但在我执行 Swift 应用程序时没有。

我错过了什么吗?

【问题讨论】:

  • 那么,为什么要投反对票?
  • 我也经历过同样的事情。放弃 swift 并改用 Obj-c 玩。也许是 B2?

标签: swift ios8 ios-app-extension


【解决方案1】:

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

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

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

找到解决方案on the apple developer forums供您参考。

注意:您可能需要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
}

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

【讨论】:

  • 这是一个非常重要的答案。很多人在使用 Swift 为 iOS 8 制作小部件时遇到问题,而这个快速修复可以解决问题。
  • @n00neimp0rtant 这也涵盖了here
【解决方案2】:

应用扩展目标必须包含 arm64 (iOS) 或 x86_64 架构 (OS X) 在其架构构建设置中。

Apple's documentation

【讨论】:

  • 谢谢!这绝对解决了我的问题。显然 Xcode 没有自动包含适当的 64 位架构,如文档中所述。 Everyting 在模拟器中运行良好,但在我的设备 (5s) 上,小部件的主体不会出现。
【解决方案3】:

Xcode6 是测试版,这是一个错误,您必须等待新版本。

【讨论】:

  • 你确定吗,因为我没有在发行说明中找到这个。所以这意味着,我现在不能使用 Swift 进行扩展?
  • 我确定是个bug,很多人都遇到过,等下一次beta更新吧,毕竟是beta软件!
【解决方案4】:

对我来说,问题是扩展程序的部署目标设置为与我的应用程序目标不同的版本。您应该确认扩展程序的目标设置正确,因为它可能针对不同的版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多