Автоматическая настройка высоты NSTableView
Я уже задавал этот вопрос однажды, но я не очень доволен решением.
Автоматически настраивать размер NSTableView
Я хочу отобразитьNSTableView
вNSPopover
или вNSWindow
.
Теперь размер окна должен корректироваться в соответствии с табличным представлением.
Как это делает Xcode:
С Auto Layout это довольно просто, вы можете просто прикрепить внутренний вид к суперпросмотру.
Моя проблема в том, что я не могу определить оптимальную высоту представления таблицы. Следующий код перечисляет все доступные строки, но не возвращает правильное значение, потому что в табличном представлении есть другие элементы, такие как разделители и заголовок таблицы.
- (CGFloat)heightOfAllRows:(NSTableView *)tableView {
CGFloat __block height;
[tableView enumerateAvailableRowViewsUsingBlock:^(NSTableRowView *rowView, NSInteger row) {
// tried it with this one
height += rowView.frame.size.height;
// and this one
// height += [self tableView:nil heightOfRow:row];
}];
return height;
}
1. ВопросКак я могу это исправить? Как я могу правильно рассчитать необходимую высоту представления таблицы.
2. ВопросГде я должен запустить этот код?
Я не хочу реализовывать это в контроллере, потому что это определенно то, что табличное представление должно обрабатывать само.
И я даже не нашел никаких полезных методов делегата.
Так что я решил, что лучше бы, если бы вы могли подклассNSTableView
.
Итак, мой вопрос 2, где это реализовать?
Определенно стоит награды