如何在iOS中的Uitableviewcell之间设置空格?

时间:2014-11-04 12:36:46

标签: ios iphone uitableview

我是iOS开发的新手,我知道这个问题被多次询问,但我对此感到困惑。我想知道如何在部分UITableview单元格之间设置一个空格。在我的应用程序UITableview包含两个部分第一部分只包含一个数据值,所以没有任何问题。但是我的第二部分包含5到7个数据值但是它们之间没有空格如何在UITableview中的第二个单元格之间设置页脚空间。

1 个答案:

答案 0 :(得分:2)

好的,所以你有两个方法

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

但两者都不是为了在单个部分中将单元格之间放置空间。

我的钱有两种选择......第一种也是最复杂的/ hacky

    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
  1. 您可以返回第二部分中的单元格计数,并在cellForRowAtIndexPath if (section == 0)中按常规方式输入数据... {{1}您可以使用else代替数组或其他任何内容。

  2. (更简单,更好的做法)..创建一个UITableViewCell子类并在[theArray objectAtIndex:indexPath.section]中使用它,如此

    cellForRowAtIndexPath
  3. 在自定义单元格.m中,您可以设置

    (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *CellIdentifier = @"Cell";
    static NSString *MyCellIdentifier = @"MyCustomCell";
    
    switch (indexPath.section) {
        case 0:
        {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    
        if (!cell)
            cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    
        // setup your 1st section cells here
    
        return cell;
    
        }
            default:
        {
            MYTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyCellIdentifier];
    
            if (!cell)
                cell = [[MYTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:MyCellIdentifier];
    
           // all other layout code here if indexPath.row == 0 etc.
    
           return cell;
        }
    }
    

    然后最后使用

    -(void)layoutSubviews
    {
        [super layoutSubviews];
        self.imageView.frame = CGRectMake(0,0,0,0); // lay them out at the top / middle / wherever  in your cell
        self.textLabel.frame = CGRectMake(0,0,0,0); // which will allow for some space at the bottom / edges
    }
    

    通过这种方式,您可以在单元格中设置填充,这更加清晰且可重复使用。如果你想要不同的颜色来标记间距,你应该在自定义的UITableViewCell子类方法中创建UIViews

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    
       if(indexPath.section == 0)
         return THE_CELL_HEIGHT;
       else 
         return THE_CELL_HEIGHT + PADDING;
    }
    

    并使用- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 添加它们如果您在tableView后面有图像/内容,则可以始终将单元格的[self.contentView addSubView:someView];设置为backgroundColor