2010-09-18 4 views
0

создать сгруппированный TableView стиляIphone SDK: ошибка компилятора или ошибка логики?

и таблица имеет 5 секций, а каждая секция имеет различное число строк

Вот мой код

1.Задайте сколько секций в таблице

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    // Return the number of sections. 
    return 5; 
} 

2.Set каждый строки в секции

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    // Return the number of rows in the section. 
    switch (section) { 
    case 0: 
    return 1; 
    break; 
    case 1: 
    return 2; 
    break; 
    case 2: 
    return 3; 
    break; 
    case 3: 
    return 1; 
    break; 
    case 4: 
    return 2; 
    break; 
    default: 
    return 1; 

} 
} 

3.Give раздел заголовка:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 

switch (section) { 
    case 0: 
    return @"Section 1"; 
    break; 
    case 1: 
    return @"Section 2"; 
    break; 
    case 2: 
    return @"Section 3"; 
    break; 
    case 3: 
    return @"Section 4"; 
    break; 
    case 4: 
    return @"Section 5"; 
    break; 
    default: 
    return nil; 

} 
} 

5.Only дают первую строку данных первого раздела (потому что другие я не есть идея установить ячейку еще)

- (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==0 && indexPath.row==0) { 
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    cell.textLabel.text = @"About System"; 

} 
    return cell; 
} 

чем у меня же две ячейки в разделе 0 row0, а в разделе 4 Строка 0

Но если я пометить заголовок раздела

Отображается только текстовая метка в разделе 0 Строка 0

Является ли моя ошибка логики коммутатора? или просто компилятор вопрос ????

+0

Что вы подразумеваете под «отметьте заголовок раздела»? – kennytm

+2

99.9999999% времени, когда кто-то говорит «Это ошибка компилятора», это не так, это логическая ошибка. Если человек, задающий вопрос, имеет опыт программирования менее 5 лет, это составляет до 100%. –

+0

Ох ... Я только пишу программу примерно полтора месяца, отметка означает использование/* */ –

ответ

1

Да, это логическая ошибка. Обратите внимание, что вы, вероятно, повторно используете ячейку в -tableView:cellForRowAtIndexPath:. Поэтому, если вы не устанавливаете текстовую метку,

  • Если это совершенно новая ячейка, текстовая метка будет пустой.

  • Если это повторно используемая ячейка, текстовая метка останется прежней, что может быть About System или нет.

В заключение, если вы не установили метку, нет определенного поведения в отношении того, что вы получите.

+0

, но ... она по-прежнему не имеет смысла, когда я удаляю только - (NSString *) tableView: (UITableView *) tableView titleForHeaderInSection : (NSInteger) раздел ... чем ячейка станет результатом, к которому я хочу. –

+0

@WebberLai: Правильно. В настоящее время код не имеет смысла, кроме раздела 0 Строка 0. – kennytm