我的一些代码有问题。我很肯定有一个非常简单的解决方案,我似乎看不到它!基本上,我使用单个 tableview 类来显示不同的数据(内容、项目、动作)。我没有 3 个不同的表格视图控制器,而是有一个可以跟踪哪个单元格被点击并显示相关数据。一切都很好!我正在使用带有单独 nib 文件的自定义单元格类,因此我需要正确实现一个 if 语句(或 switch 语句)来检查哪个单元格被点击(self.title),然后基于它创建自定义单元格。
显然我遇到的问题是范围,cell.imageView 不知道它引用的是什么,因为它在 if 语句中时超出了范围。
我试过使用
id cell;
我得到同样的错误。我有什么方法可以做到这一点,所以每个“标题”都使用不同的自定义单元格?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
if (title == @"Content" || title == @"Favorite Content")
{
ContentCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"ContentCell" owner:self options:nil];
for (id currentObject in objects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (ContentCell *)currentObject;
break;
}
}
}
}
else if (title == @"Items" || title == @"Favorite Items")
{
ItemCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"ItemCell" owner:self options:nil];
for (id currentObject in objects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (ItemCell *)currentObject;
break;
}
}
}
}
else if (title == @"Moves" || title == @"Favorite Moves")
{
MoveCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *objects = [[NSBundle mainBundle] loadNibNamed:@"MoveCell" owner:self options:nil];
for (id currentObject in objects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (MoveCell *)currentObject;
break;
}
}
}
}
cell.imageView.image = [UIImage imageNamed:[[self.theData objectAtIndex:indexPath.row] objectForKey:@"image"]];
cell.contentName.text = [[self.theData objectAtIndex:indexPath.row] objectForKey:@"name"];
return cell;
}
任何帮助都会很棒!我敢肯定,我盯着屏幕看的时间让我错过了一些简单的事情。谢谢!