UITableviewcell使一些控件无效

时间:2014-05-15 12:39:33

标签: ios objective-c uitableview

我正在使用Custom tableViewCell。单元格包含一些labels等,但在所有行中,两行包含图形。

问题是我保持图形(子类视图)隐藏,但不想为每个单元格加载图形。如果我执行该图nil,那么它也会从那两行开始。

请建议我使用table因为该图而不会占用大量内存。

代码是这样的

    self.btnTitleOfSection = [UIButton buttonWithType:UIButtonTypeCustom];
    self.btnTitleOfSection.frame = CGRectMake(5, 5, 316, 30);
    [self.btnTitleOfSection setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.btnTitleOfSection setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
    [self.btnTitleOfSection setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
    [self.contentView addSubview:self.btnTitleOfSection];

    self.viewGraph1 = [[Graph1 alloc]initWithFrame:CGRectMake(40, 5, 240, 140)];
    self.viewGraph1.backgroundColor = [UIColor clearColor];
    [self.contentView addSubview:self.viewGraph1];

    self.viewGraph2 = [[Graph2 alloc]initWithFrame:CGRectMake(40, 5, 240, 110)];
    self.viewGraph2.backgroundColor = [UIColor clearColor];
    [self.contentView addSubview:self.viewGraph2];

    self.lblGraphH = [[UILabel alloc]initWithFrame:CGRectMake(100, 145, 103, 21)];
    self.lblGraphH.text = @"Week";
    [self.contentView addSubview:self.lblGraphH];

我不想每次都加载viewGraph1和viewGraph2。

我是否必须仅使用两个单元格,或者我可以使用1个单元格来解决内存问题。

1 个答案:

答案 0 :(得分:0)

您的图表将仅显示在其他单元格上,因为您的单元格正在重复使用。您必须在cellForRowAtIndexPath方法中为图表实现默认值,并且只在特定条件下启用图表,如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
 static NSString *CellIdentifier = @"Cell";
    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(!cell)
    {
        cell = [[CustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    }

   [cell.graph setHidden:YES];

   // check for your condition here
   if(indexPath.row == yourIndex)
   {
     // show the graph only in this cell
     [cell.graph setHidden:NO];
   }
}