15

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

在此处输入图像描述

有其他人得到这个吗?我在我的所有 ViewControllers 方法中设置了断点,但没有调用任何内容。我将 Info.plist 更改为直接进入我的 VC 课程,而不是故事板,但我仍然一无所获。我可以在 info.plist 中更改今天扩展的标题。

4

5 回答 5

9

First, to test that anything is happening, add awakeFromNib to your view controller and set preferred content size (all code in Obj C):

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

As milesper said above, comment out the default init method and create an empty initWithCoder: to get around some bug in 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;
//}

Now Clean and then run again. At this point you should see it resize (make sure you add a label with text or something to test).

Make sure you test with a plain UIViewController class, not a subclass. Once you see your widget size respond, then try a subclass. I spent an hour today just to find out that using UICollectionViewController simply doesn't work in Beta 2 (will file a RADAR).

于 2014-06-21T21:19:59.163 回答
7

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

模拟器日志

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

xxxxx.local Widget[43414]:由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[ TodayViewController 0x7fd893d7ca60> setValue:forUndefinedKey:]:此类不符合键标签的键值编码。”

如果您改为选择小部件目标,xcode 会将调试器附加到今天的视图小部件,并且如果您启用了“所有异常”断点,您将能够查看是否存在异常以及发生的位置。

小部件目标

于 2014-07-14T19:29:51.157 回答
2

注释掉原来的init方法:

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

添加这个初始化方法:

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

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

于 2014-06-17T14:25:32.280 回答
1

我对此有点挣扎。

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

如果您将所有必要的约束添加到视图的子视图,则可以推断 Today Extension 的高度,并且您的视图将按您的意愿显示。

于 2014-11-04T01:20:49.640 回答
0

我遇到了同样的问题,就像你遇到不同的问题一样。

1)如果您经常从 Xcode 重新启动您的小部件,它会在手机上被杀死,并且系统似乎为此惩罚了您,在您在 Xcode 中杀死您的小部件之前始终关闭今天视图是个好主意,这样它就会“很好地”结束而不是被 Xcode 杀死

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

2)我使用的是日志框架,每次我尝试将数据上传到服务器时,小部件都会冻结并且不再反应。然后,当我关闭通知中心并重新打开它时,我遇到了和你一样的问题,要么是今天的空小部件,要么是今天高度为 0 的小部件。

解决方案:虽然不是一个好方法,但不是从小部件代码上传数据……真正奇怪的是,在调试版本中一切正常,但在发布版本中却不行。

于 2015-03-17T21:10:16.773 回答