在动态tableview中添加静态单元格

时间:2014-01-23 03:05:58

标签: ios objective-c uitableview

我正在尝试将静态单元格添加为动态tableview中的第一个单元格。我在这里看到了其他问题,但它们似乎没有用。任何帮助是极大的赞赏。我实际上得到了我的单元格,但它正在替换我的第一个动态单元格,当我在表格视图中滚动时,我的应用程序崩溃了。

这是我到目前为止所得到的:

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


static NSString *CellIdentifier = @"Cell"; 
 CustomSideBarCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (indexPath.row < NUMBER_OF_STATIC_CELLS) { 

cell.sidePic.image = _secondImage; 
cell.sideOption.text = @"Everything"; 

return cell; 

} 

else { 

cell.sidePic.image = _secondImage; 
_tempResults = [_tableData objectAtIndex:indexPath.row]; 
_optionCategory = [[_tempResults objectForKey:@"post"] objectForKey:@"category_name"]; 
cell.sideOption.text = _optionCategory; 

1 个答案:

答案 0 :(得分:3)

我认为您的问题是,在您创建了所有静态单元格后,您使用_tableData访问了indexPath.rowNUMBER_OF_STATIC_CELLSindexPath.row = 0 - 3开始。

假设你有4个静态单元和6个动态单元。这总共有10个细胞。 因此,在创建所有静态单元格(indexPath.row = 4 - 9)之后,即使您的dataSource(_tableData)只有6个元素,它也会创建_tableData的动态单元格。这就是为什么在访问- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; CustomSideBarCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //static cell if (indexPath.row < NUMBER_OF_STATIC_CELLS) { cell.sidePic.image = _secondImage; cell.sideOption.text = @"Everything"; return cell; } //dynamic cell cell.sidePic.image = _secondImage; //subtract the number of static rows to start at 0 for your dataSource _tempResults = [_tableData objectAtIndex:indexPath.row - NUMBER_OF_STATIC_CELLS]; _optionCategory = [[_tempResults objectForKey:@"post"] objectForKey:@"category_name"]; cell.sideOption.text = _optionCategory; return cell; } 时必须减去静态单元格的数量。

{{1}}