tôi thấy đây là một câu hỏi cũ, nhưng câu trả lời là sử dụng một Xem dựa NSTableView sau đó thực hiện tableView:. viewForTableColumn: hàng :.
này được mã dựa trên cách Tôi làm điều đó. Nó chưa được biên dịch trong Xcode.
-(NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSTableCellView *cell = nil;
// get your row from your array of objects.
// determine if it's a section heading or not.
SomeClass *someObject = [self.myObjects objectAtIndex:row];
if (someObject.isSectionHeading) {
cell = [tableView makeViewWithIdentifier:@"HeaderCell" owner:self];
cell.textField.objectValue = someObject.headingName;
} else {
cell = [tableView makeViewWithIdentifier:@"DataCell" owner:self];
cell.textField.objectValue = someObject.rowValue;
}
return cell;
}
Và cũng tableView: isGroupRow sẽ đặt một nền màu xám trên phần tiêu đề của bạn
-(BOOL)tableView:(NSTableView *)tableView isGroupRow:(NSInteger)row {
BOOL isGroup = NO;
// Choose some way to set isGroup to YES or NO depending on your records.
return isGroup;
}
Hãy chắc chắn rằng trong Interface Builder bạn đã thiết lập các định danh cho NSTableCellViews của bạn để "HeaderCell" và "DataCell". Hoặc sử dụng bất kỳ tên nào bạn muốn. Miễn là nó khớp với mã của bạn. Bạn có thể có bao nhiêu ô này tùy thích.
Nếu bạn tạo lớp con của NSTableCellView thì bạn có thể dễ dàng thêm trường văn bản, hộp kiểm, hình ảnh, v.v. của riêng bạn vào chế độ xem và đặt giá trị tương ứng.
Nguồn
2013-10-09 02:28:57
Hãy thử điều này - trong các bảng tổng quan ô phức tạp https://developer.apple.com/library/mac/samplecode/TableViewPlayground/Introduction/Intro.html – johndpope