Xcode 未调用numberOfRowsInTableView
我正在设置一个基于视图的NSTableView,但是没有调用方法numberOfRowsInTableView。当我检查是否调用它时,日志返回nil 我已将我的AppDelegate设置为符合数据源和代理协议,并已通过IB将它们连接到AppDelegate。我的数组将在应用程序完成加载时初始化,该数组将为表提供数据 我的代码如下: 接口Xcode 未调用numberOfRowsInTableView,xcode,methods,nstableview,Xcode,Methods,Nstableview,我正在设置一个基于视图的NSTableView,但是没有调用方法numberOfRowsInTableView。当我检查是否调用它时,日志返回nil 我已将我的AppDelegate设置为符合数据源和代理协议,并已通过IB将它们连接到AppDelegate。我的数组将在应用程序完成加载时初始化,该数组将为表提供数据 我的代码如下: 接口 #import <Cocoa/Cocoa.h> @interface RLTAppDelegate : NSObject <NSApplic
#import <Cocoa/Cocoa.h>
@interface RLTAppDelegate : NSObject <NSApplicationDelegate, NSTableViewDataSource, NSTableViewDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTableView *tableView;
@property (copy) NSArray *nameArray;
@end
我刚刚做了一个测试项目,看看发生了什么 如果在
applicationdFinishLaunching
和numberOfRowsInTableView
上放置断点,您将看到在收到applicationdFinishLaunching
通知之前调用了numberOfRowsInTableView
方法
因此,在填充数组之前,您需要它
通常情况下,发生这种情况时会有一个单独的类,并且在初始化该类时设置数组,因此不会发生这种情况。他是正确的,因为您使用的是一个字符串,只有一个运算符,如果对象为nil,它将不会在控制台中记录。您是一个救生员。我想我需要拆分我的模型类,先填充它,然后再将结果发送到数组。@TeenDev是的,我看到了(或者没有看到)。谢谢你指出!
#import "RLTAppDelegate.h"
@implementation RLTAppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
self.nameArray = [[NSArray alloc] initWithObjects:@"Ryan", nil];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return [self.nameArray count];
NSLog(@"%lu", self.nameArray.count);
}
- (NSView *)tableView:(NSTableView *)tableView
viewForTableColumn:(NSTableColumn *)tableColumn
row:(NSInteger)row {
NSTextField *result = [tableView makeViewWithIdentifier:@"name" owner:self];
result.stringValue = [self.nameArray objectAtIndex:row];
return result;
}
@end