Подтвердить что ты не робот

Просмотр на основе NSTableView с разделами

Я ищу способ создания iOS-подобных разделов в NSTableView (например, в iTunes 11 - Attached).

Как вы можете видеть на скриншоте, "Альбомы" - это один раздел, а "Песни" - второй. Любая помощь будет оценена.

Спасибо!

enter image description here

4b9b3361

Ответ 1

Если вам нужны разделы, вы в основном должны сворачивать свои собственные (признайте, что строка x должна быть ячейкой раздела и предоставлять вид сечения. TwUI имеет TUITableView, который позволяет это (и значительно улучшает производительность прокрутки, по моему опыту).

Ответ 2

Я вижу, что это старый вопрос, но ответ заключается в использовании NSTableView на основе представления, а затем реализовать tableView: viewForTableColumn: row:.

Это код, основанный на том, как я это делаю. Он не был скомпилирован в 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 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;

}

А также tableView: isGroupRow поместит серый фон в заголовки разделов

-(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;
}

Убедитесь, что в Interface Builder вы установили идентификаторы для ваших NSTableCellViews в "HeaderCell" и "DataCell". Или используйте любые имена, которые вы хотите. Пока это соответствует вашему коду. Вы можете иметь как можно больше таких ячеек.

Если вы создаете подкласс NSTableCellView, вы можете легко добавить свои собственные текстовые поля, флажки, изображения и т.д. в представление и соответственно установить их.

Ответ 3

Существует очень хорошее и простое учебное пособие, в котором показано, как реализовать NSTableView с разделами с образцом кода в github. Просто посмотрите здесь, а в описании видео есть ссылка для загрузки кода.