我创建了一个具有分组样式的表格视图。我已将此表添加到 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 渲染到“成人 8”单元格。之后,表格不会呈现剩余的单元格。