Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 无法更改iOS 7(iPad)上静态表格视图单元格的背景色_Iphone_Ios_Objective C_Ipad_Uitableview - Fatal编程技术网

Iphone 无法更改iOS 7(iPad)上静态表格视图单元格的背景色

Iphone 无法更改iOS 7(iPad)上静态表格视图单元格的背景色,iphone,ios,objective-c,ipad,uitableview,Iphone,Ios,Objective C,Ipad,Uitableview,在iPad设备上运行时,我无法更改iOS 7上静态UITableViewCells的背景色。您可以通过以下设置轻松检查这一点: 在Xcode 5中创建一个带有两个情节提要的新通用项目 在每个情节提要中,仅放置一个控制器-表视图控制器,并将其设置为初始控制器 在两个控制器/情节提要的表视图中放置几个(例如3个)静态单元格 在Interface Builder中将每个静态单元格的背景色设置为不同的颜色(我使用红色、绿色和透明色) 现在,在iPhone和iPad模拟器(iOS 7)上运行该应用程序

在iPad设备上运行时,我无法更改iOS 7上静态UITableViewCells的背景色。您可以通过以下设置轻松检查这一点:

  • 在Xcode 5中创建一个带有两个情节提要的新通用项目
  • 在每个情节提要中,仅放置一个控制器-表视图控制器,并将其设置为初始控制器
  • 在两个控制器/情节提要的表视图中放置几个(例如3个)静态单元格
  • 在Interface Builder中将每个静态单元格的背景色设置为不同的颜色(我使用红色、绿色和透明色)
现在,在iPhone和iPad模拟器(iOS 7)上运行该应用程序

在iPhone模拟器上,一切正常
在iPad模拟器上,所有的电池都是白色的

我试图通过在Interface Builder中为单元格设置运行时属性来强制iPad正常工作:

  • backgroundColor
    以清除颜色
  • contentView.backgroundColor
    以清除颜色
  • 背景视图
    为零
但没有任何帮助。实际上,设置
contentView.backgroundColor
的运行时属性将更改单元格的颜色,但它不能使用清晰的颜色(这意味着后面有另一个以白色显示的视图)

非常奇怪的是,同一版本iOS上的两台设备会产生不同的结果。其他人能确认这个错误吗

有没有人能解决这个问题,或者唯一的办法就是在
cellforrowatinexpath
中使用动态属性+设置颜色?我想使用静态单元格,因为问题的本质是静态的


p、 我刚刚意识到我忘了尝试将
backgroundView.backgroundColor
runtime属性设置为clear color,而且我目前无法访问Mac。也许这样就可以了。

我解决这个问题的唯一方法是以编程方式制作表格,而不是使用故事板。作为参考,我将发布我的解决方案,我希望它能帮助任何人

我将uitableviewcontroller替换为uiviewcontroller

然后加上这个,

头文件

#import <UIKit/UIKit.h>

@interface LtHomeViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
{
NSArray *mFiles;
NSArray *mPics;
}

@end
David

请执行以下操作:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
     UIImage *pattern = [UIImage imageNamed:@"image.png"];
     [cell setBackgroundColor:[UIColor colorWithPatternImage:pattern]];  
}
在IOS7上为我工作就写这行

[cell setBackgroundColor:[UIColor clearColor]]

在返回语句之前的函数中

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

因为在iOS7文档中,每个表单元格的默认颜色都是白色。所以,如果你想改变它,那么你必须从你的代码中改变它。 请记住从实用程序>属性检查器(位于右侧)将背景属性设置为“清除tableview的颜色”

希望对你有帮助。。。因为它对我有用

根据:

无论使用预定义单元格还是自定义单元格,都可以使用
backgroundView
属性或通过更改继承的
backgroundColor
属性来更改单元格的背景。在iOS 7中,默认情况下,单元格背景为白色;在iOS的早期版本中,单元格继承封闭表视图的背景色。如果要更改单元格的背景色,请在表视图委托的
tableView:willDisplayCell:forrowatinexpath:
方法中进行更改


因此,无论您在
tableView:cellforrowatinexpath:
中设置什么颜色,iOS 7都会在稍后将其更改为白色。只需在
tableView:willDisplayCell:forrowatinexpath:
中设置它。对我来说效果很好。

有一种更简单的方法来覆盖单元格背景色。子类UITableViewCell并将其设置为静态tableview单元格的类。然后覆盖:

-(void) willMoveToSuperview:(UIView *)newSuperview  {
    self.backgroundColor = [UIColor ...];
}

其中[UIColor…]=您想要的任何颜色(例如[UIColor clearColor]等)

改为更改ContentView背景色,它将正常工作

尝试更改storyboard中ipad的每个静态tableViewCell的内容视图的背景色,它可以工作,但不知道为什么?将其设置为“清晰颜色”(将表格背景色设置为一些随机颜色,例如紫色),您将看到它不工作(单元格将为白色)。我有完全相同的问题,在我的iPhone4S和ios 7上,它工作得非常完美,但在我的iPad7上,电池是白色的,我甚至没有使用清晰的颜色,而是纯色。我向苹果提交了一个bug。如果他们注意到了,我会把它贴在这里。到2014年2月还没有修复。你可能不需要willDisplayCell委托方法。您可以通过将代码从该方法移动到CellForRowatineXpath中来实现同样的效果。但我的问题是关于静态单元的。我想避免使用代码中生成的动态原型/单元。是的,事实上你是对的,我在发布了这个答案后就明白了。至于你的问题,如果你使用cellForRowAtIndexPath函数,只使用indexPath.row过滤静态单元格,你的问题就不会解决了?然后你可以做一个if循环或一个开关,改变单个单元格的背景颜色。我认为当你使用静态单元格时,你不能使用datasource:)静态单元格应该在IB中构建,并牢记“所见即所得”的原则。当您的屏幕有固定数量的选项时,使用它们非常方便。之后,您可以轻松地为这些静态单元格分配分段,甚至可以将容器视图放入其中,将屏幕分隔为多个模块,其中每个模块由单独的子视图控制器控制。这大大提高了代码的可重用性。然后你遇到了一个难题,对不起,苹果在周末推出了一个新的更新,我从故事板开始,所以我无法验证它是否改变了任何东西(我不这么认为),祝你好运,如果你真的找到了解决方案,请及时更新。自iOS2以来,该方法将是在运行时确定单元格的合适位置。这是目前唯一有效的解决方案。我是h
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
     UIImage *pattern = [UIImage imageNamed:@"image.png"];
     [cell setBackgroundColor:[UIColor colorWithPatternImage:pattern]];  
}
-(void) willMoveToSuperview:(UIView *)newSuperview  {
    self.backgroundColor = [UIColor ...];
}