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

时间:2015-04-15 13:17:20

标签: ios semantics watchkit wkinterfacegroup

我正在使用 iOS SDK 8.3 并尝试关注this tutorial在监视工具包应用中创建表格。

我在iWatch应用程序的接口控制器上添加了一个表,然后将其链接到我的InterfaceController。我创建了一个自定义行类,并将该行链接到行控制器类。然后我在行中添加了几个项目并将它们链接到行控制器类中的出口。但是我遇到了一些错误:

enter image description here

这是我的接口控制器类:

#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]];

    }];

enter image description here

2 个答案:

答案 0 :(得分:2)

您的devicesTable被声明为WKInterfaceGroup,它支持您正在呼叫的方法。我相信你打算使用WKInterfaceTable。您可能无意中从组中拖动了表的连接,而不是Interface Builder中的表。

答案 1 :(得分:1)

看一下教程,似乎有点困惑。

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

"InterfaceController"应将devicesTable作为WKInterfaceTable

Apple Doc's on WKInterfaceTable

Apple Doc's on WKInterfaceGroup