以下是我的2个NSTableCellViews:
第一个比第二个大(当用户搜索tableview并且没有结果时使用这个)但是当我运行我的应用时,第二个获得第一个的大小:
为什么会这样?这是我的代码部分
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
if (noResults){
return 1;
}else{
return [array count];
}
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if (noResults){
NSTableCellView *result = [tableView makeViewWithIdentifier:@"NoResults" owner:self];
result.textField.stringValue = [NSString stringWithFormat:@"No results for \"%@\"", _searchTXT.stringValue];
return result;
}else{
SearchTableCell *result = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];
result.textField.stringValue = @"Name";
result.textField2.stringValue = @"Last Name";
return result;
}
}
答案 0 :(得分:2)
您需要实现tableView:heightForRowAtIndexPath:方法。否则,单元格将全部为表视图rowHeight属性的高度。
答案 1 :(得分:1)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if(noResults){
//在此处返回NSTableCellView高度;
}其他{
//返回SearchTableCell高度;
}
}
希望这会对你有所帮助。
答案 2 :(得分:1)
对于基于视图的NSOutlineView,请实现委托方法outlineView:heightOfRowByItem:
以返回所需的行高。
要避免代码中的常量,请考虑从关联视图中确定高度:
- (CGFloat)outlineView:(NSOutlineView *)outlineView heightOfRowByItem:(id)item
{
NSView* view = [self outlineView:outlineView viewForTableColumn:nil item:item];
return (view ? NSHeight(view.frame) : outlineView.rowHeight);
}