今天扩展有一个标题,但没有身体的iOS 8

我正在尝试iOS 8中新的TodayExtensions ,并按照WWDCvideo创buildiOS和OS X扩展第1部分中所述的步骤创buildToday Extension。 我在提供的故事板中的ViewController中添加了一个彩色的UIView。 我在“今日”通知中心获得了一个冠军头衔,但是我没有看到我的彩色视图。 看起来像这样(我做了两个):

在这里输入图像说明

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

首先,为了testing发生什么事,将awakeFromNib添加到您的视图控制器并设置首选内容大小(Obj C中的所有代码):

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

正如milesper在上面所说的,注释掉默认的init方法,并创build一个空的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; //} 

现在清理,然后再次运行。 在这一点上,你应该看到它resize(确保你添加一个标签文本或东西来testing)。

确保你testing一个普通的UIViewController类,而不是一个子类。 一旦你看到你的小部件大小回应,然后尝试一个子类。 我花了一个小时才发现,使用UICollectionViewController在Beta 2中不起作用(将文件RADAR)。

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

模拟器的日志

如果在窗口小部件视图控制器上发生崩溃,它将显示如下所示:

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

如果您select了widget target,xcode会将debugging器附加到当前的视图窗口小部件,如果您启用了“All exceptions”断点,您将能够看到是否存在exception以及升级的地方。

小部件目标

注释掉原始的init方法:

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

添加这个init方法:

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

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

我用这个挣扎了一下。

然后我发现它试图使用MainInterface.storyboard中的所有子视图的约束来推断视图的高度。

如果将所有必要的约束添加到视图的子视图中,则可以推断今天扩展的高度,并且您的视图将按照您的意图显示。

我碰到了和你遇到的问题一样的问题。

1)如果你经常从Xcode重新启动你的小部件,它会在手机上被杀死,看起来系统惩罚了你,这是一个好主意,总是closures今天的观点,然后在Xcode中杀死你的小部件,以便“很好”结束而不是被Xcode杀死

解决scheme:有时候唯一的解决方法是从今天的视图中删除小部件,并阅读它(甚至有时从手机中删除应用程序,并再次安装)

2)我正在使用一个日志框架,每次我试图上传数据到服务器的小部件冻结,并没有反应了。 然后当我closures通知中心并重新打开它时,我遇到了和你一样的问题,或者是今天的空白部件,或者是今天的高度为0的部件。

解决scheme:虽然不是一个好的方法,但是不会从Widget代码上传数据……真的很奇怪,在debugging版本中,一切正常,但不是发布版本。