当前位置: 代码迷 >> Iphone >> UITableView 设立BackGroundView
  详细解决方案

UITableView 设立BackGroundView

热度:382   发布时间:2016-04-25 05:48:49.0
UITableView 设置BackGroundView ?
以下代码,运行结果正确, 所有cell的背景图都替换成功。可是当我把UIView *view = [[UIView alloc]init];view.backgroundColor =[UIColor redColor]; 这两行代码移道Viewdidload()中,并且将view定义成我的类的成员变量。再在cellForRowAtIndexPath:函数中将cell的backgroupview = _view;这样一改后,为什么每次只有最后一个cell的背景图可以替换成功,其余的背景图都替换不了,求解决办法,我不想每次都在cellForRowAtIndexPath alloc一个view,那样效率太低了?


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

{
    UITableViewCell * Cell1 =[tableView dequeueReusableCellWithIdentifier: @"PlanCell"];
    NSArray *array =[NSArray arrayWithObjects:@"相序方案",@"配时方案",@"周方案",@"假日方案",
                     @"时间方案",@"感应方案",nil];
    Cell1.selectionStyle = UITableViewCellSelectionStyleBlue;
    Cell1.textLabel.text = [array objectAtIndex:indexPath.row];;
    Cell1.textLabel.font = [UIFont fontWithName:@"Helvetica" size:20];
    UIImageView *view = [[UIView alloc]init];
    view.backgroundColor =[UIColor redColor];
    Cell1.backgroundView = view;
    return Cell1;
    
}

------解决方案--------------------
UIImageView *view = [[UIView alloc]init];
view.backgroundColor =[UIColor redColor];
Cell1.backgroundView = view; //这里其实是把view添加到cell上了,如此一来view的superview就变成这个cell了。
因此它的父view改变了,每个view有自己的superview,用来管理层级关系的。
因此当一个view被addSubView到另外一个view上时,另外的view就变成这个view的superview了。
所以你没有办法共享一个view。
  相关解决方案