Несколько пользовательских ячеек динамически загружаются в одно представление таблицы
У меня проблема с некоторыми из моего кода. Я весьма уверен, что есть очень простое решение, я просто не могу его увидеть! В основном я использую один класс табличного представления для отображения различных данных (контент, элементы, ходы). Вместо трех разных контроллеров табличного представления у меня есть один, который отслеживает, какая ячейка нажата, и показывает соответствующие данные. Все работает очень хорошо! Я использую пользовательские классы ячеек с отдельным файлом пера, поэтому мне нужно правильно реализовать оператор 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;
}
Любая помощь будет отличной! Я'Я уверен, что мои часы, уставившиеся на экран, заставили меня пропустить что-то простое. Спасибо!