Я задал этот вопрос раньше, но я просто не очень доволен решением.
Автоматически настраивать размер NSTableView
Я хочу показать NSTableView
в NSPopover
или в NSWindow
.
Теперь размер окна должен корректироваться в виде таблицы.
Так же, как Xcode делает это:
Это довольно просто с автоматической компоновкой, вы можете просто привязать внутренний вид к супер-представлению.
Моя проблема в том, что я не могу определить оптимальную высоту табличного представления. Следующий код перечисляет все доступные строки, но не возвращает правильное значение, потому что в представлении таблицы есть другие элементы, такие как разделители и головка таблицы.
- (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, где его реализовать?
Мотивация
Определенно стоит награда