У меня есть несколько видов таблиц, отображающих разные элементы. Детальный вид для каждой ячейки должен иметь тот же макет. Я хочу использовать один и тот же подробный вид для всех ячеек каждой таблицы, не создавая для каждого таблицы отдельный класс подробных представлений, поскольку он в значительной степени будет одним и тем же кодом. Как мне это сделать?Xcode reuse detail view для просмотра нескольких таблиц
Следующий метод находится в одном из видов таблиц. Это показывает подробный вид при выборе ячейки:
-(void)tableView:(UITableView *)tv didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
NSLog(@"didSelectRowAtIndexPath");
AppDelegate *delegate =
(AppDelegate *)[[UIApplication sharedApplication] delegate];
Detail *detail=
[[Detail alloc] initWithIndexPath:indexPath];
[delegate.navController pushViewController:detail animated:YES];
[tv deselectRowAtIndexPath:indexPath animated:YES];
}
Ниже приведен метод viewDidLoad в классе Детальный вид:
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *delegate =
(AppDelegate *)[[UIApplication sharedApplication] delegate];
PokemonInfo *thisPokemon = [delegate.allArray objectAtIndex:index.row];
self.title = thisPokemon.name;
nameView.text = thisPokemon.name;
typeView.text = thisPokemon.type;
attackView.text = thisPokemon.attack;
attackView.editable = NO;
}
Justin, У вас может быть несколько способов сделать это: - создать метод, который снова инициирует ваш контроллер подробных представлений и снова. При инициализации передайте объект PokemonInfo. - или выделите его один раз и просто используйте метод экземпляра с вашим объектом значения. В основном вещи, которые вы выполняете в didLoad, будут загружать, пока контроллер создается. – Tarun
Спасибо за совет. У меня был метод, который инициировал ячейку с indexPath. Я просто изменил метод так, чтобы он также принимал ключ от вызывающего, чтобы определить, какая таблица является такой, чтобы он мог отображать соответствующий массив в методе viewDidLoad. – apples