2012-01-13 58 views
6

我有一个应用程序故事板。在一个场景中,我有一个静态单元格内容的tableview。是否可以将背景选定的颜色更改为默认选项(蓝色和灰色)之外的另一种颜色?如何更改背景所选颜色故事板静态单元格

我知道如果我可以更改forRowAtIndexPath中的单元格背景颜色,但在这种情况下,我没有任何来自tableview的数据源函数。我相信这是可能的IB或其他功能,我可以修改...

在此先感谢!

回答

8

我有同样的问题。该解决方案有两部分:

1)获取单元格,看看this。 2)改变背景颜色:你必须创建一个你所需要的背景颜色的UIView,并将其设置为电池

举例的selectedBackgroundView,我用这个代码中的UITableViewController的viewDidLoad中:

UIView *backgroundSelectedCell = [[UIView alloc] init]; 
[backgroundSelectedCell setBackgroundColor:[UIColor colorWithRed:130/256.0 green:169/256.0 blue:171/256.0 alpha:1.0]]; 

for (int section = 0; section < [self.tableView numberOfSections]; section++) 
    for (int row = 0; row < [self.tableView numberOfRowsInSection:section]; row++) 
    { 
     NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section]; 
     UITableViewCell* cell = [self.tableView cellForRowAtIndexPath:cellPath]; 

     [cell setSelectedBackgroundView:backgroundSelectedCell]; 
    } 
+0

谢谢Carlos ...你是西班牙人吗? – Camacho 2012-04-25 16:37:33

+0

这种方法可能有效。我真的不知道当你有一堆单元格和表格滚动时它会如何表现。在动态单元中,它们在需要时被缓存和丢弃。在didLoad方法期间更改背景将确保第一个呈现单元格具有正确的背景颜色,但可能无法确保滚动单元格将保留该引用。无论如何,它需要编码,静态单元的目的是使用,而不需要编码...我发布了一个答案,可以让你完成,而无需编码。 – 2012-09-21 00:41:48

18

您不需要编写任何一行代码即可完成此操作。您可以使用故事板完成所有操作。只要做到这一点:

  1. 一个UIView添加到您的UITableViewCell并将其链接到单元格的selectedBackgroundView特性(查找此属性,则需要从"New Reference Outlet"拖行并释放它在所需UITableViewCell
  2. 更改UIView的颜色为选中状态

你可以做同样的事情与backgroundView属性所需的颜色。此外,您可以使用UIImageView来使用图像,而不是使用UIView的单色背景。

下面是使用自定义的UIViewController,而不是一个UITableViewController一个示例文件,但它工作在两个:http://uxp.com.br/downloads/CustomCell.zip

+0

伟大的方法!这是与故事板一起工作的方式,我们许多人都不熟悉,以及他们如何被认为与之合作。谢谢! – brainray 2012-10-23 23:14:55

+2

你是如何做到这一点而不会出现这个错误的? HTTP://计算器。com/questions/13090338/runtime-error-setting-backroundview-property-of-uitableviewcell -in-storyboard – 2012-10-31 03:24:10

+0

我没有使用AutoLayout。也许这就是为什么我没有得到任何错误。但它看起来像一个bug。你有没有填补苹果内的错误? – 2012-10-31 18:58:08

-2

这里是我们这些X-代码5 +使用自动布局的解决方案...

对于静态单元格,你可以改变背景颜色,但它不起作用。但是,每个单独的单元格都将在IB中自动具有内容视图。如果我们更改此内容视图的背景,它将更改单元格背景。

只需添加到@Leandro Alves的答案,所以我们不必将额外的UIViews拖到我们的项目!

+0

这不会改变选定的背景颜色。 – phatmann 2015-05-01 18:03:20

相关问题