UITableView重用单元格未被绘制

时间:2012-09-14 10:32:52

标签: objective-c ios cocoa-touch uitableview

我创建了一个带有分组样式的tableview。我已将此表添加到UIScrollView的子视图中。我根据它的行数计算了表的大小。因此tableView没有滚动。我将能够看到所有细胞。

表格第一次正常工作并显示所有单元格。但我的问题是每当我导航到下一页并返回并重新加载该表时,它只会渲染并重新绘制已分配的单元格。重新使用的单元格不会重新绘制。 tableView:cellForRowAtIndexPath:也没有为这些单元格调用。

我怀疑由于禁用了tableview的滚动,因此不会调用重用单元格的cellForRowAtIndexPath方法,因此它们不会被渲染。

我已按以下方式创建了tableView

 m_TravellerDetailTable = [[UITableView alloc] initWithFrame: CGRectMake( 2.0f, 0, 315.0f, 370 ) style: UITableViewStyleGrouped ];
 float height = (tableViewCellHeight * [travellersArray count]);
 m_TravellerDetailTable.frame = CGRectMake(2, 0, 315, height);
 [m_TravellerDetailTable setBounces: NO];
 [m_TravellerDetailTable setScrollEnabled: NO];
 [m_BaseScrollView addSubview: m_TravellerDetailTable];

UITableViewDelegate方法

 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
   {
       return [travellersArray count];
   }

 -(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
   {
       return tableViewCellHeight;
   }

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

     static NSString *CellIdentifier = @"Cell";
     cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) 
     {

            cell = [[TravellerDetailCustomCellView alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
     }


     TravellerDetailCustomCellView *customCell = (TravellerDetailCustomCellView *)cell;
     [customCell.textLabel setText:[travellerInfoFromDetailForm objectForKey:@"DOB"]];
  }

此快照显示渲染所有单元格的uitableview

UITableView with all Cells

快照显示uitableview仅渲染到“Adult 8”单元格。之后,表格不会渲染剩余的单元格。

UITableView without reuesed cells

2 个答案:

答案 0 :(得分:1)

它正在渲染,但你的框架很小,桌面视图也被剪掉了。

你应该删除

[m_TravellerDetailTable setBounces: NO];
[m_TravellerDetailTable setScrollEnabled: NO];

答案 1 :(得分:0)

它是由UIScrollView引起的.UIScrollView缓存了它的子视图的绘制。我建议你不要将UITableView添加到UIScrollView