如何在tableview iOS中重复设置节标题而不重复数据?

时间:2016-02-29 05:17:46

标签: ios objective-c uitableview

我有一个表格视图,现在我正在初始化表格,

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return [arr count]+1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [arr count]+1;
}

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

    NSUInteger row = [indexPath row];
    if (row == 0) 
    {
        UITableViewCell *cell = [[UITableViewCell alloc] init];
        return cell;
    }
    else
    {
        static NSString *CellIdentifier = @"moduleCell";
        MyTableViewCell *cell = (MyTableViewCell*)[tableView dequeueReusableCellWithIdentifier: CellIdentifier];

        if (cell == nil) 
        {

            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:nil];
            cell = [nib objectAtIndex:0];

            cell.backgroundColor = [UIColor clearColor];
            cell.selectedBackgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@""]];
            cell.selectionStyle = UITableViewCellSelectionStyleNone;

        }
        current = [arr objectAtIndex:indexPath.row-1];
        [cell setCellDetails:arr WithIndex:row-1 withParentView:self];
        return cell;
    }
}

当我在我的tableview中重复这些数据时。在我这样做之前,我做到了,

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

这是有效的,但我需要像标题一样设置节标题。那么有没有办法设置节标题而不重复数据?

4 个答案:

答案 0 :(得分:1)

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.section == 0){//for first section

    }else if(indexPath.section == 1){//for second section

    }
}

答案 1 :(得分:0)

您需要实施此方法:

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
    if (section==0) {
        return "name";
    }else{
        //
    }
}

答案 2 :(得分:0)

你需要继续使用数组。因此,您可以避免委托方法中的硬编码。

    NSArray *heading=@[@"Today",@"Yesterday",@"Tomorrow"];


    - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
            NSString *heading = [heading objectAtIndex:section]; //  
            return heading;
    }

答案 3 :(得分:0)

func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        var cstmView:UIView!

        let lbl:UILabel

        cstmView = UIView()

        cstmView.frame = CGRectMake(0,0,tableView.contentSize.width,70.0)

        let logo:UIImageView = UIImageView();

        logo.image = UIImage(named: "logo_with_lightGrayColor")

        logo.frame = CGRectMake(8.0,10.0,200.0,60.0)

        lbl = UILabel()

        lbl.frame = CGRectMake(8.0,80.0,200.0,20.0)

        lbl.text = "USER NAME"

        lbl.textColor = UIColor.whiteColor()

        lbl.font = UIFont.systemFontOfSize(15.0)

        cstmView .addSubview(logo)

        cstmView.addSubview(lbl)

        return cstmView;

    }

您应该为tableview实现自定义标头。