我有一个NSTableView,我想显示一个信息列表。
目前,viewForTableColumn
方法委托永远不会运行,但numberOfRowsInTableView
会运行。
我在ViewController头中设置了NSTableViewDelegate和NSTableViewDataSource
。我将tableview委托和数据源设置为self。有人知道为什么它不会运行吗?我在下面添加了屏幕截图和代码。
ViewController.h
@interface ViewController : NSViewController <NSTableViewDelegate, NSTableViewDataSource>
@property (strong) IBOutlet NSTableView *tableView;
@property (strong, nonatomic) NSMutableArray<App *> *installedApps;
@end
ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
_installedApps = [[NSMutableArray alloc] init];
_tableView.dataSource = self;
_tableView.delegate = self;
// Other stuff that populates the array
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return _installedApps.count;
}
-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTableCellView *result = [tableView makeViewWithIdentifier:@"appCell" owner:self];
result.textField.stringValue = @"Hello world";
return result;
}
视图位于容器视图中,我有一个appCell&#39;标识符设置为表格单元格视图。
答案 0 :(得分:0)
数组_installedApps
为空,numberOfRowsInTableView:
返回0.因此,未调用tableView:viewForTableColumn:
,因为没有要显示的行。没有行也意味着没有列。
您还应确保在表格视图的属性检查器中将表格视图配置为基于视图。
答案 1 :(得分:0)
我无法在屏幕截图中看到它,但是...是带有appCell标识符的视图层次结构(表格单元格视图)的突出显示的行?
[会议通过......]
糟糕;抱歉。我看到你已经注意到了上述情况。
我问的原因是我从你的代码中创建了一个新项目,将数组类型从App更改为NSString,向故事板添加了一列表视图,将其链接到代码,添加了一些内容到在-viewDidLoad中的数组,并且 - 一旦我将appCell标识符放在正确的位置(duh) - 它一切正常。
答案 2 :(得分:0)
这很奇怪,但是我遇到了同样的问题,一切都正确连接,调用了行数,但没有viewForTableColumn ...最终,以下答案被证明是解决方案:
https://stackoverflow.com/a/13091436/3963806
基本上,我已经直接在对象库中设置了tableview,没有布局约束等。一旦添加了布局约束,该方法就开始被调用。。。行”,但未正确填充...我认为这是由于链接答案中提到的剪切所致。