Как повторно использовать некоторые ячейки из режима раскадровки UITableVIewController Статические ячейки - PullRequest
1 голос
/ 27 февраля 2012

У меня есть UITableViewController, который я сделал Статическими ячейками , используя Interface Builder и три добавленных различных вида ячеек.

Первая ячейка - это какая-то информация, последняя ячейка позволяет вводить данные, которые в свою очередь показывают центральную ячейку .

enter image description here

Я хочу повторно использовать центральную ячейку и добавлять новые, когда пользователь входит в последнее поле для комментариев.

Моя проблема в том, что, поскольку это статические ячейки, я не могу использовать центральную ячейку в одиночку, я думаю.Как я могу решить это?

1 Ответ

3 голосов
/ 27 февраля 2012

не используйте статические ячейки.Статические ячейки не предназначены для повторного использования.Со статическими ячейками вы создаете таблицу исключительно в XIB.

Создайте три разные ячейки прототипа и присвойте им другой идентификатор повторного использования и используйте их как обычные ячейки.

Поскольку ваша таблица разбита на разделы, просто используйте информацию раздела indexPath, чтобы получить правильныйклетка.

Примерно так должно работать:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 3;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (section == 1) {
        return _objects.count;
    }
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = nil;
    if (indexPath.section == 1) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"SecondCell"];
        // configure the mid cells
        NSDate *object = [_objects objectAtIndex:indexPath.row];
        cell.textLabel.text = [object description];
    }
    if (indexPath.section == 0) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"FirstCell"];
        // configure first cell
    }
    else if (indexPath.section == 2) {
        cell = [tableView dequeueReusableCellWithIdentifier:@"ThirdCell"];
        // configure last cell
    }
    return cell;
}

также обратите внимание на свойства tableFooterView и tableHeaderView.Возможно, вам вообще не нужны ячейки для первого и последнего элемента.

...