Клетки реорганизуются на iPhone? - PullRequest
0 голосов
/ 27 февраля 2010

Я пишу приложение для бизнеса моего отца, оно включает списки, однако я видел, что оно, похоже, реорганизует список, хотя я и не хочу этого. Например, весь раздел 1 должен сказать одно: когда я прокручиваю вниз, содержимое из других разделов помещается в ячейки раздела 1, это относится и к другим разделам. Вот весь код таблицы, если это поможет.

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (section == ENGINEER_ID) {
        return 3;
    } else if (section == FIREMAN_ID) {
        return 3;
    } else if (section == CONDUCTOR_ID) {
        return 3;
    } else if (section == TRAINMASTER_ID) {
        return 3;
    } else {
        return 0;
    }
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        if ([indexPath section] == ENGINEER_ID) {
            cell.textLabel.text = @"Engineer";
        } else if ([indexPath section] == FIREMAN_ID) {
            cell.textLabel.text = @"Fireman";
        } else if ([indexPath section] == CONDUCTOR_ID) {
            cell.textLabel.text = @"Conductor";
        } else if ([indexPath section] == TRAINMASTER_ID) {
            cell.textLabel.text = @"Trainmaster";
        }
    }

    // Configure the cell.

    return cell;
}

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {    
    if (section == ENGINEER_ID) {
        return @"Master Engineer II";
    } else if (section == FIREMAN_ID) {
        return @"Fireman";
    } else if (section == CONDUCTOR_ID) {
        return @"Conductor";
    } else if (section == TRAINMASTER_ID) {
        return @"Trainmaster";
    } else {
        return @"What.";
    }

}

1 Ответ

1 голос
/ 27 февраля 2010

Вам нужно переместить присвоение текста из условного.

После того, как первые 3 ячейки будут выделены / инициализированы, вы не обязательно получите больше ячеек.

Вы присваиваете cell.textLabel.text, только если вы создаете новую ячейку.

Логика должна быть:

статический NSString * CellIdentifier = @ "Cell";

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

 if ([indexPath section] == ENGINEER_ID) {
    cell.textLabel.text = @"Engineer";
 } else if ([indexPath section] == FIREMAN_ID) {
     cell.textLabel.text = @"Fireman";
 } else if ([indexPath section] == CONDUCTOR_ID) {
     cell.textLabel.text = @"Conductor";
 } else if ([indexPath section] == TRAINMASTER_ID) {
     cell.textLabel.text = @"Trainmaster";
 }

И, конечно, после того, как вы устали писать каскадные операторы if, вы можете использовать switch ([indexPath section])

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