2012-08-07 4 views
0

У меня есть несколько видов таблиц, отображающих разные элементы. Детальный вид для каждой ячейки должен иметь тот же макет. Я хочу использовать один и тот же подробный вид для всех ячеек каждой таблицы, не создавая для каждого таблицы отдельный класс подробных представлений, поскольку он в значительной степени будет одним и тем же кодом. Как мне это сделать?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; 
} 
+0

Justin, У вас может быть несколько способов сделать это: - создать метод, который снова инициирует ваш контроллер подробных представлений и снова. При инициализации передайте объект PokemonInfo. - или выделите его один раз и просто используйте метод экземпляра с вашим объектом значения. В основном вещи, которые вы выполняете в didLoad, будут загружать, пока контроллер создается. – Tarun

+0

Спасибо за совет. У меня был метод, который инициировал ячейку с indexPath. Я просто изменил метод так, чтобы он также принимал ключ от вызывающего, чтобы определить, какая таблица является такой, чтобы он мог отображать соответствующий массив в методе viewDidLoad. – apples

ответ

0

Создайте вид и положите его в СИБ. Дайте каждому элементу уникальный тег в представлении. Когда вам нужно создать экземпляр представления с помощью nib (UINib), затем получите доступ к каждому элементу, когда вы хотите его заполнить, запросив использование «viewWithTag». Предполагая, что вы перерабатываете ячейки, вы всегда устанавливаете элементы произвольного вида с соответствующими данными.

Приведенное выше, более традиционный подход заключается в создании экземпляра ячейки в банке, а затем сделать то же самое - каждый элемент, к которому вы хотите получить доступ, имеет уникальный тег.

Смежные вопросы