- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellidenti = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableHeaderFooterViewWithIdentifier:cellidenti];
if(cell == Nil)
{
cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellidenti];
}
cell.textLabel.text = isActive?searchData[indexPath.row]:tableData[indexPath.row];
cell.detailTextLabel.text = isActive?searchNumberData[indexPath.row]:tableNumberData[indexPath.row];
return cell;
}
我没有得到完美的观点,我没有使用故事板。
答案 0 :(得分:3)
您没有使用可重用单元格实例的正确方法,也使用静态单元格标识符。所以有关更多信息,请参阅编辑部分中的以下代码....
-UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellidenti = @"Cell";// edited here.....
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidenti];// edited here
if(cell == Nil)
{
cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellidenti];
}
cell.textLabel.text = isActive?searchData[indexPath.row]:tableData[indexPath.row];
cell.detailTextLabel.text = isActive?searchNumberData[indexPath.row]:tableNumberData[indexPath.row];
return cell;
}
答案 1 :(得分:1)
此行中出现错误UITableViewCell *cell = [tableView dequeueReusableHeaderFooterViewWithIdentifier:cellidenti];
这将返回UIView
,而不是UITableviewCell
。相反,你可以使用下面的行。
[tableView dequeueReusableCellWithIdentifier:cellidenti];
答案 2 :(得分:1)
我在代码中观察到的两件事
1)使用correct way of cell reusability
使用dequeueReusableCellWithIdentifier
(正如其他人已建议的那样)。另请参阅使用dequeueReusableCellWithIdentifier:forIndexPath:
的单元here的可重用性的另一种方法。
2)尝试使用nil
代替Nil
。看看this thread。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *cellidenti = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellidenti];
if(cell == nil)
{
cell= [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellidenti];
}
cell.textLabel.text = isActive?searchData[indexPath.row]:tableData[indexPath.row];
cell.detailTextLabel.text = isActive?searchNumberData[indexPath.row]:tableNumberData[indexPath.row];
return cell;
}
答案 3 :(得分:0)
USe dequeueReusableCellWithIdentifier
用于创建重用实例