2013-05-16 81 views
1

我有一个自定义UITableViewCell。这些有以下问题:用户界面问题与定制UITableViewCell

  1. 删除按钮太右,重叠我的背景。我想设置一个插图,以便它向左移动一点,然后看起来很棒。

Delete button overlapping

蓝色的高亮显示状态横跨屏幕的整个宽度,我想它只是我的曲格背景的边界内进行设置。

Highlighted state

有没有办法来解决这两个问题?谢谢。

编辑:我的代码如下设置背景(只是一个自定义的方法):

- (UIImage *)cellBackgroundForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSInteger rowCount = [self tableView:[self tableView] numberOfRowsInSection:0]; 
    NSInteger rowIndex = indexPath.row; 
    UIImage *background = nil; 

    if (rowIndex == 0) { 
     background = [UIImage imageNamed:@"cell_top.png"]; 
    } else if (rowIndex == rowCount - 1) { 
     background = [UIImage imageNamed:@"cell_bottom.png"]; 
    } else { 
     background = [UIImage imageNamed:@"cell_middle.png"]; 
    } 

    return background; 
} 

我再打电话,只是得到的每一个细胞后更新它reloadTable无效的方法在此方法中出现了行更新(添加或删除行,因为表中有3个不同的图像)。我也在调用结果控制器从Core Data获取所有项目并首次加载表格后调用此方法。

编辑2:这是reloadTable方法的代码:

- (void)refreshTable 
{ 
    for (NSInteger j = 0; j < [self.tableView numberOfSections]; ++j) 
    { 
     for (NSInteger i = 0; i < [self.tableView numberOfRowsInSection:j]; ++i) 
     { 
      UIImage *background = [self cellBackgroundForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]; 

      UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background]; 
      cellBackgroundView.image = background; 
      UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]; 
      cell.backgroundView = cellBackgroundView; 
     } 
    } 
} 

的问题是:我不知道如何设置边距或一个的tableView的宽度或表视图细胞。我需要继承一些东西吗?它通常如何完成?

+0

我相信这些问题都与你的“定制的'UITableViewCell'”的界限有关。你可以发布一些代码给我们看吗? –

+0

@TheKraken我添加了一些代码,希望它有帮助。 – swiftcode

+0

正确的图像被返回后,你是否将其设置为“UITableViewCell”的视图? –

回答

1

问题是您的表格视图框架宽度,所选单元格的蓝色将填充整个单元格,所以您应该减少您的表格视图的宽度,以便它将具有一些margins这样delete按钮将会也出现在左边一点。但是当你选择它们时,第一个和最后一个单元仍然会有问题,因为它们具有圆角,但蓝色选择不会有圆角,所以我建议你应该为选定状态创建一个.png图像(一个第一个单元格,一个中等细胞和一个底电池)

编辑

在iOS系统中的margins概念不存在,我只是用这个词,因为我认为它会更容易理解但在这里你必须做什么才能在表格视图的左侧和右侧显示一点空间:

yourTableView.frame = CGRectMake(leftMarginSpace, 
           0, 
           self.view.frame.size.width 
            - leftMarginSpace 
            - rightMarginSpace, 
           self.view.frame.size.height); 

因此,如果您将表视图添加到视图控制器的视图中,那么表视图将定位在距视图控制器顶部(0 y位置)左侧leftMarginSpace的距离处,位于rightMarginSpace距离右侧,并且将具有视图控制器的高度。

如果添加表视图作为一个子视图到另一个视图(不视图控制器的视图),那么你必须改变这样的框架:

yourTableView.frame = CGRectMake(leftMarginSpace, 
            0, 
            parentView.frame.size.width 
             - leftMarginSpace 
             - rightMarginSpace, 
            parentView.frame.size.height); 

我也注意到,要创建分组桌子的风格,所以你应该检查grouped table view

+0

你能给我一些示例代码吗?我不知道如何设置边距。 – swiftcode

+0

请检查我编辑的答案。 – danypata