带有customcell的UITableView

时间:2015-03-25 09:00:26

标签: ios objective-c uitableview cocoa-touch

我正在开发一个带有tableview的iPhone应用程序,它可以作为具有不同部分的表单。我还有3个自定义单元格,包含文本字段,段控制和UISwitchView。我的问题是,当我按下开关或在其中一个textField中键入一些文本时,Switch的相同状态或文本字段的文本重新出现在不同的行和不同的部分中。

以下是一些描述我问题的图片和部分代码:

enter image description here enter image description here enter image description here

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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    NSInteger rows = 0;
    switch (section) {
        case 0:
            rows = 5;
            break;
        case 1:
            rows = 11;
            break;
        case 2:
            rows = 9;
            break;
        default:
            break;
    }

    return rows;      
}


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


    // init cell
    switch (indexPath.section) {
        case 0:
            if (indexPath.row>=0 && indexPath.row<=3)
            {

                cell = [tableView dequeueReusableCellWithIdentifier:@"text_field_cell"];

            }
            else if (indexPath.row == 4)
            {
                cell = [tableView dequeueReusableCellWithIdentifier:@"segment_cell"];

            }
            break;
        case 1:
            if (indexPath.row >=0 && indexPath.row <= 9)
            {
                cell = [tableView dequeueReusableCellWithIdentifier:@"switch_cell"];

            }
            else if (indexPath.row == 10)
            {
                cell = [tableView dequeueReusableCellWithIdentifier:@"text_field_cell"];

            }
            break;
        case 2:
            if (indexPath.row >=0 && indexPath.row <= 6)
            {
                cell = [tableView dequeueReusableCellWithIdentifier:@"switch_cell"];

            }
            else if (indexPath.row >=7 && indexPath.row <=8)
            {
                cell = [tableView dequeueReusableCellWithIdentifier:@"text_field_cell"];

            }
            break;

        default:
            break;
    }

// init all text ..

return cell;

}

1 个答案:

答案 0 :(得分:0)

我会实现-tableView:willDisplayCell:forRowAtIndexPath:将细胞设置为每行的正确状态。