今天Extension有一个标题,但没有iOS 8

Sir*_*III 15 ios swift ios8 ios-app-extension

我正在iOS 8中尝试新的TodayExtensions,我按照WWDC视频为iOS和OS X创建扩展,第1部分中的步骤创建了今天扩展.我在提供的故事板中为ViewController添加了一个彩色的UIView.我在"今天"通知中心获得了一个标题,但是我没有使用我的彩色视图.它看起来像这样(我做了两个):

在此输入图像描述

还有其他人得到这个吗?我在所有ViewControllers方法中设置了断点,没有任何东西被调用.我将Info.plist更改为直接转到我的VC类,而不是故事板,我什么都没得到.我可以在info.plist中更改今天扩展名的标题.

Ale*_*ian 9

首先,要测试发生的任何事情,请将awakeFromNib添加到视图控制器并设置首选内容大小(Obj C中的所有代码):

- (void)awakeFromNib {
    [super awakeFromNib];
    [self setPreferredContentSize:CGSizeMake(self.view.bounds.size.width, 50)];
}
Run Code Online (Sandbox Code Playgroud)

如上所述,请注释掉默认的init方法并创建一个空的initWithCoder:来解决Beta 2中的一些错误:

-(id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        // init
    }
    return self;
}

//- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
//    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
//    if (self) {
//        // Custom initialization
//    }
//    return self;
//}
Run Code Online (Sandbox Code Playgroud)

现在清洁然后再次运行.此时您应该看到它调整大小(确保添加带有文本的标签或要测试的东西).

确保使用普通的UIViewController类进行测试,而不是子类.一旦您看到您的窗口小部件响应,然后尝试子类.我今天花了一个小时才发现使用UICollectionViewController根本不能在Beta 2中工作(将提交RADAR).


pab*_*art 7

如果您正在运行应用程序方案而不是小部件方案,首先要检查的是设备日志或模拟器日志.由于Today的视图是系统的一部分,而不是您在Xcode中调试的应用程序的一部分,因此您不会在Xcode控制台上的小部件视图控制器上看到错误.您可以在系统日志中检查模拟器的控制台:

模拟器的日志

如果小部件视图控制器发生崩溃,它将显示如下内容:

xxxxx.local Widget [43414]:由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[ TodayViewController 0x7fd893d7ca60> setValue:forUndefinedKey:]:此类不是密钥标签的密钥值编码兼容.

如果您选择窗口小部件目标,xcode会将调试器附加到今天的视图窗口小部件,如果您启用了"所有例外"断点,您将能够查看是否存在异常以及升级的位置.

小工具目标


mgi*_*inn 2

注释掉原来的init方法:

//    init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
//        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
//        // Custom initialization
//    }
Run Code Online (Sandbox Code Playgroud)

添加这个初始化方法:

init(coder aDecoder: NSCoder!) {
   super.init(coder: aDecoder)
   // Custom initialization here
}
Run Code Online (Sandbox Code Playgroud)

清理并构建您的项目。确保您的小部件内容有高度限制。