Внешний вид из UITableView - PullRequest
2 голосов
/ 18 мая 2010

Мне нужно реализовать контурный вид 1 уровня из UITableView. Ячейки, в которых есть дочерние элементы, будут иметь символ «+», и если пользователь нажмет на него, ячейки под ним должны сдвинуться вниз и появиться дочерние ячейки текущей выбранной строки. Скользящие ячейки должны быть видны, и если пользователь нажимает кнопку «-» в уже развернутой строке, дочерние ячейки должны скользить обратно в родительский элемент.

Я пробовал поискать в Google, но не нашел указателей.

Как начать, следует ли создавать подкласс UITableView? Или я должен реализовать свой собственный подкласс вида и обрабатывать все вещи там?

Мне почему-то кажется, что подкласс UITableView будет проще, потому что он будет обрабатывать весь выбор строк для нас, но я не могу понять, как это сделать.

Спасибо и С уважением, Радж

Ответы [ 2 ]

2 голосов
/ 19 мая 2010

Не можете ли вы сохранить словарь в качестве источника данных? словарь, содержащий массив словарей. И внутренний словарь с двумя парами ключ-значение:

  1. isExpanded
  2. информация для детей.

При проверке bool isExpanded вы получите количество строк. И вам нужно настроить ячейку, чтобы добавить кнопки. Будет ли это работать для вас?

Вы можете различить дочерние ячейки, слегка подтолкнув их содержимое вправо

1 голос
/ 18 мая 2010

Вы должны создать подкласс и UITableViewCell

@interface OutlineCell : UITableViewCell

Затем в ViewController вашей таблицы

- (UITableViewCell*) tableView: (UITableView*) tableView cellForRowAtIndexPath: (NSIndexPath*) indexPath {
    NSString* MyIdentifier = @"MyIdentifier";

    OutlineCell* cell = (OutlineCell*) [tableView dequeueReusableCellWithIdentifier: MyIdentifier];
    if (cell == nil) {
        cell = [[OutlineCell alloc] init];
    }

    // Populate cell data
}

Вы можете определить интерфейс через IB, создав пустой XIB и перетащив UITableViewCell, с вашим пользовательским классом OutlineCell в качестве владельца файла. Затем добавьте кнопки, метки и т. Д.

РЕДАКТИРОВАТЬ: если вам нужна внутренняя таблица в ячейке, попробуйте тот же подход, добавив подпредставление к определенной вами UITableViewCell с UITableView внутри.

...