我正在尝试将静态单元格添加为动态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;
答案 0 :(得分:3)
我认为您的问题是,在您创建了所有静态单元格后,您使用_tableData
访问了indexPath.row
,NUMBER_OF_STATIC_CELLS
从indexPath.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}}