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

时间:2014-06-09 20:01:16

标签: ios swift ios8 ios-app-extension

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

enter image description here

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

5 个答案:

答案 0 :(得分:9)

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

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

正如上面提到的那样,注释掉默认的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;
//}

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

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

答案 1 :(得分:7)

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

Simulator's log

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

  

xxxxx.local Widget [43414]:因未捕获而终止应用   例外' NSUnknownKeyException',原因:' [ TodayViewController   0x7fd893d7ca60> setValue:forUndefinedKey:]:这个类不是键   符合关键标签的编码符号。'

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

Widget target

答案 2 :(得分:2)

注释掉原始的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
}

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

答案 3 :(得分:1)

我为此苦苦挣扎。

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

如果您将所有必要的约束添加到视图的子视图中,则可以推断今日延伸的高度,并且您的视图将按预期显示。

答案 4 :(得分:0)

我遇到了与你遇到的不同问题相同的问题。

1)如果你经常从Xcode重新启动你的小部件,它会在手机上被杀死,看起来系统会因此而惩罚你,在你杀掉Xcode中的小部件之前总是关闭今天的视图是个好主意很好地"很好地"结束而不是被Xcode杀死

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

2)我使用的是日志框架,每当我尝试将数据上传到服务器时,小部件就会冻结,并且不再响应。当我关闭通知中心并重新打开它时,我遇到了与你一样的问题,包括今天的空白小部件或今天的0高度小部件。

解决方案: 虽然不是很好,但不是从窗口小部件代码上传数据......真的很奇怪,在调试版本中,一切正常,但不适用于版本构建。