ios - 即使里面没有数据,如何设置 UITableViewCell 的自定义背景颜色

标签 ios objective-c uitableview

我想完成这样的事情:

Table view cell

看到只有一个数据,但是背景颜色一直持续到结束。

我知道我可以在 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 时得到的输出。

enter image description here

我也写了这个方法来手动调用 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/

相关文章:

ios - 我应该如何使用 Viewcontroller

ios - UIScrollView _delegateScrollViewAnimationEnded 崩溃

objective-c - 多态性和 Cocoa NSViews + 绑定(bind)

iphone - iOS:用于登录屏幕的表格样式 TextField?

ios - UITableViewAutomaticDimension

ios - UITableViewCell 动画破坏 UITableView 触摸检测和滚动

iOS ARC - 为什么对象不立即释放?

ios - Swift 2.3 会与 iOS 10 兼容吗?

ios - 任何其他类中的 UINavigationController

ios - 在 iOS 中使用 NSDictionary 的可扩展 UITableview 单元格