【问题标题】:Can't set referencing outlet for NSTableView无法为 NSTableView 设置引用出口
【发布时间】:2014-01-14 17:42:58
【问题描述】:

我正在尝试将NSTableView 的数据源/委托/引用出口设置为我的主要.xib 的外部类。出于某种原因,我无法从我的 Xib 中 Ctrl+Drag.h 文件来创建引用。到目前为止,这是我的代码:

table1.h

@interface table1 : NSTableView

@property (strong) NSArray* tableData;

@end

table1.m

- (NSView*)tableView:(NSTableView*)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSTableCellView *cellView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

    [cellView.textField setStringValue:[self.startupTypes objectAtIndex:row]];

    return cellView;
}

- (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
    return [self.startupTypes count];
}

- (void)viewDidMoveToWindow {
    self.startupTypes = @[@"Test Data 1", @"Test Data 2"];
}

然后我打开我的 .xib 文件,将表类设置为 table1,并尝试将表中的 Ctrl+Drag.h 文件以创建出口。但它不会让我创建连接。我也无法将此文件设置为数据源或委托。

【问题讨论】:

    标签: objective-c xcode macos nstableview


    【解决方案1】:

    将您的代码更改为:

    - (NSInteger)numberOfRowsInTableView:(NSTableView*)tableView {
        if (tableView == self.table1) {
            return [self.activeList count];
        } else if (tableView == self.table2) {
            return [self.disabledList count];
        }
    
        return 0;
    }
    

    第一个问题是您将“table1”和“table2”声明为属性,但您没有正确引用它们。

    第二个问题是“isEqual”比较对象的内容,但您真正想做的是比较对象地址本身(因此“isEqual”在这里不适用)。

    【讨论】:

    • 这是有道理的,但仍然没有用。如果我 NSLog(@"%@", self.table1),它是空的。但由于某种原因,它不允许我在 xib 文件上设置一个引用出口,以将每个表分配给一个出口
    • 您是否在窗口上设置了自定义类? “WindowOne”不应该是“NSWindow”的子类吗? NSViewController 不如 iOS 下的 UIViewController 有用。
    • 不,窗口是 MainWindow.h/.m/.xib,我将视图附加到主窗口
    • 然后从“NSView”子类化,而不是从“NSViewController”子类化,并确保正确设置该视图的“自定义类”字段,然后 你应该能够将你的 outlet 连接到你的 xib 文件中的表视图。
    • 当我这样做时,我的 MainWindow.m 在这些行上中断: self.windowOne = [[WindowOne alloc] initWithNibName:@"WindowOne" bundle:nil]; [self.window.contentView addSubview:self.WindowOne.view]; self.WindowOne.view.frame = ((NSView*)self.window.contentView).bounds;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多