'WKinterfaceGroup' 没有可见的@interface 声明选择器:iOS 8.3 中有什么变化吗?

No visible @interface for 'WKinterfaceGroup' declares the selector: has something changed in iOS 8.3?

我正在使用 iOS SDK 8.3 并尝试按照 this tutorial 在手表套件应用程序中创建 table。

我在 iWatch 应用程序的界面控制器上添加了一个 Table,然后将其链接到我的界面控制器。我创建了一个自定义行 class 并将该行链接到行控制器 class。然后我在行中添加了几个项目并将它们链接到行控制器 class 中的插座。但是我得到了一些错误:

这是我的界面控制器class:

#import <WatchKit/WatchKit.h>
#import <Foundation/Foundation.h>

@interface InterfaceController : WKInterfaceController

@property (strong, nonatomic) NSArray *devicesArray;

@property (weak, nonatomic) IBOutlet WKInterfaceGroup *devicesTable;

@end

这是触发错误的代码:

- (void)awakeWithContext:(id)context {
    [super awakeWithContext:context];
    NSLog(@"%@ initWithContext", self);
    self.devicesArray = @[@"type A", @"type B"];
    [self.devicesTable setNumberOfRows:self.devicesArray.count withRowType:@"MyTableRowController"];

    [self.devicesTable enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {

        MyTableRowController* row = [self.devicesTable rowControllerAtIndex:idx];

        [row.deviceType setText: (NSString*)obj];
        [row.logo setImage:[UIImage imageNamed:(NSString *)obj]];

    }];

您的 devicesTable 被声明为 WKInterfaceGroup which does support the methods you are calling. I am sure you meant to use WKInterfaceTable。您可能无意中从组中拖出了 table 的连接,而不是 Interface Builder 中的 table。

看教程,好像有点懵了

使用的 WKInterfaceGroup 用于您创建的 "MyTableRowController" 子类。

"InterfaceController" 应该有 devicesTable 作为 WKInterfaceTable

Apple Doc 在 WKInterfaceTable

Apple Doc 在 WKInterfaceGroup