在UITableView中设置多个部分

时间:2012-11-15 22:15:29

标签: ios uitableview tableview

我已经使用自定义单元格设置了uitableview。

我想将这些分为带标题的部分。看下面的照片我正在寻找以下布局:

部分 - 我的个人资料 自定义单元格 - wwwwwwwwwwwwww ...
部分 - 申请
自定义单元格 - 游戏
自定义单元格 - 分享
自定义单元格 - 费率
自定义单元格 - 设置
自定义单元格 - 帮助
自定义单元格 - 注销

我可以看到如何添加一个部分并控制一个部分中的行,但这会将单元格复制到多个部分,我不知道如何让一个部分有一行,另一个部分有6行。我也希望将这些部分的样式显示出来,就像Facebook菜单样式一样。

我应该为实际部分创建自定义单元格而不对部分(单元格)选择执行任何操作吗?

以下是UITableView的代码

static NSString *CellIdentifier = @"Cell";
LeftMenuTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {

    NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"LeftMenuTableViewCell" owner:nil options:nil];

    for (UIView *view in views) {
        if([view isKindOfClass:[UITableViewCell class]]) {
            cell = (LeftMenuTableViewCell*)view;


        }
    }
}

enter image description here

1 个答案:

答案 0 :(得分:22)

您可以按如下方式定义其中的部分和行数:

- (UIView *) tableview:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{
    UIView view;
    if(section == 0) {
         // Initialise view for section 1
    } else {
         // Initialise view for section 2
    }
}

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

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

    return ((section == 0) ? 1 : 6);
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    // return appropriate cell(s) based on section
    if(indexPath.section == 0) 
    {
        // Return 1 cell
    }
    else if(indexPath.section == 1) 
    {
        switch(indexPath.row) {
            case 0: // Initialize cell 1
                    break;
            case 1: // Initialize cell 2
                    break;
            ...
        }
    }
    return cell;
}