1

这是我的 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;
    }
}
4

3 回答 3

2

您需要实现 tableView:heightForRowAtIndexPath: 方法。否则,单元格将全部是表格视图 rowHeight 属性的高度。

于 2012-10-18T22:59:54.540 回答
1
  • -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    如果(无结果){

    // 这里返回 NSTableCellView 的高度;

    }别的{

    // 这里返回 SearchTableCell 高度;

    }

}

希望这对您有所帮助。

于 2012-10-19T05:58:02.123 回答
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);
}
于 2014-02-04T15:19:01.513 回答