细胞在iPhone上进行重组?

时间:2010-02-27 15:44:18

标签: objective-c iphone uitableview

我正在为我父亲的业务编写一个应用程序,它涉及列表,但是,我已经看到它似乎重新组织了列表,即使我不想要它。例如,第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 个答案:

答案 0 :(得分:1)

您需要将文本分配移出条件。

在前3个单元格的alloc / init'd之后,你不一定会得到更多的单元格。

仅在创建新单元格时才分配cell.textLabel.text。

逻辑应该是:

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";
 }

当然,在您厌倦了编写级联if语句之后,您可以使用switch([indexPath section])