Установить заголовок навигационной панели из массива

#iphone #objective-c

#iPhone #objective-c

Вопрос:

У меня есть rootTableView с ячейками, которые загружены из массива:

 logArray = [[NSArray alloc]initWithObjects:@"John", @"Jack", @"Jill", nil];
  

Когда я нажимаю на ячейку, например, ячейку с именем «Jack», это приведет меня к вложенной таблице для «Jack»

Как мне установить заголовок этого вложенного TableView на «Jack» и т.д.

Ответ №1:

Под делегатом TableView

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

NextViewController *nextView = [[NextViewController alloc] initWithNibName:@"NextViewController" bundle:nil];


**nextView.title = [logArray objectAtIndex: indexPath.row];**


//push the nextView here

}
  

Комментарии:

1. Это работает, но есть небольшая задержка с загрузкой заголовка вложенного представления. Есть идеи, почему? Сначала загружается навигационная панель, затем загружается заголовок. Я бы хотел, чтобы он загружался одновременно.

2. у nevermind все работает нормально. просто добавил код заголовка перед push-кодом. Спасибо!

Ответ №2:

Я думаю, вы можете попробовать использовать для этого UITableView заголовок раздела

Комментарии:

1. Строка есть self.navigationItem.title = @"Test"; , но я не знаю, на что ее установить.

2. @Faisal: Извините, я вас не понял.

3. У меня есть табличное представление, ячейки заполнены кодом из моего организационного вопроса. Когда я нажимаю на ячейку, заголовок навигационной панели следующего вложенного представления должен быть названием ячейки, на которую был сделан щелчок. Например, если в первой таблице есть категории: рэп, поп, рок, танцы, кантри — если щелкнуть ячейку, в следующей таблице должны быть песни из этой категории, но заголовок навигационной панели должен быть такого жанра, например, танцевальный, поп, рэп и т.д.

Ответ №3:

Вам нужно создать свойство в вашем вложенном tableview, которому вы можете передать имя. Что-то подобное должно быть в вашем методе didSelectRowAtIndexPath.

 UITableViewCell *currentCell = [self.tableView cellForRowAtIndexPath:indexPath];
MySubtableviewController *mstvc = [[MySubTsbleViewController alloc] init];
mstvc.nameProperty = currentCell.textLabel.text;

[self.navigstiomController pushViewController:mstvc];
  

Что-то вроде этого, где свойство nameProperty объявлено в вашем контроллере sub TableView.
Затем в вашем вспомогательном контроллере просмотра просто установите заголовок в viewDidLoad.

 self.title = self.nameProperty;
  

Надеюсь, это поможет.