我想完成这样的事情:
看到只有一个数据,但是背景颜色一直持续到结束。
我知道我可以在 tableView:willDisplayCell:forRowAtIndexPath:
的 tableview delegate 里面做。但它不会进入空单元格,因此我的空单元格始终是白色的。
最佳答案
即使单元格未初始化,我也使用以下代码显示单元格替代颜色。我已经在 scrollViewDidScroll 上完成了这项工作,如下所示:--
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
UIView *view=[[UIView alloc] initWithFrame:tblView.frame];
view.backgroundColor=[UIColor greenColor];
UIView *cellView;
int y=0;
int i=0;
for (UIView *view in tblView.subviews) {
if ([NSStringFromClass([view class]) isEqualToString:@"_UITableViewSeparatorView"]) {
cellView=[[UIView alloc] initWithFrame:CGRectMake(0, y, 320, 44)];
if (i%2==0) {
cellView.backgroundColor=[UIColor redColor];
}else{
cellView.backgroundColor=[UIColor greenColor];
}
[view addSubview:cellView];
i++;
}
}
tblView.backgroundView=view;
}
并且在滚动 TableView 上得到了正确的结果。但问题是当用户至少一次滚动 tableView 时它会起作用。 如果您成功触发 tableView 上的事件并完成其重新加载。那么就没问题了。
这是我在滚动 tableView 时得到的输出。
我也写了这个方法来手动调用 didScrollMethod 但似乎并不完美。
[tblView.delegate scrollViewDidScroll:(UIScrollView*)tblView.superclass];
但是像下面的代码这样的调用方法绝对可以正常工作。
- (void)viewDidLoad
{
tblView=[[MyFirstView alloc] init];
tblView.delegate=self;
[tblView setFrame:self.view.frame];
[self.view addSubview:tblView];
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)viewDidAppear:(BOOL)animated{
[tblView.delegate scrollViewDidScroll:(UIScrollView*)tblView.superclass];
}
意味着在 viewDidLoad 中加载 tableView 后调用 viewDidAppear 中的 didScroll 工作正常。
如果滚动时第一行发生波动,请插入下面的代码。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *view=[[UIView alloc] init];
return view;
}
关于ios - 即使里面没有数据,如何设置 UITableViewCell 的自定义背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961586/