iPhone - Работа с таблицей со смесью пользовательских TableViewCells и общих ячеек - PullRequest
0 голосов
/ 28 марта 2011

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

Для этого я написал этот код, я думаю, он не оптимален:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [self.dataList count] + 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier;
    UITableViewCell *cell;

    if (indexPath.row+1 == [tableView numberOfRowsInSection:0]) {
        CellIdentifier = @"Cell";

        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }
    }

    else {
        CellIdentifier = @"ChooseSounds_cell";

        cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            UIViewController *c = [[UIViewController alloc] initWithNibName:CellIdentifier bundle:nil];
            cell = (ChooseSoundsOneCell*)c.view;
            [c release];
        }

        [((ChooseSoundsOneCell*)cell).playSoundBtn addTarget:self action:@selector(playSound:event:) forControlEvents:UIControlEventTouchUpInside];
    }

    return cell;
}

Это смесь кода по умолчанию из источника defaut TableViewController и источника, который я нашел здесь для использования пользовательской ячейки. Между ними есть небольшая разница, но поскольку я не совсем понимаю, что сделано, я разделил два блока. Я использую стандартную ячейку только для последней строки.

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

Итак, вопрос в том, что будет хорошим кодом для этого?

1 Ответ

0 голосов
/ 28 марта 2011

Обычным шаблоном является установка данных в ячейку в tableView: cellForRowAtIndexPath: не tableView: willDisplayCell.

Для последнего состояния документации (частично): этот метод дает делегату возможность переопределитьоснованные на состоянии свойства, установленные ранее табличным представлением, такие как выделение и цвет фона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...