Вы можете передать любую информацию, которая вам нужна, вашему DetailViewController
, настроив синтезированное свойство в DetailViewController
, а затем передав ему свои данные внутри блока if.
Например, в вашем DetailViewController.h
вы должны иметь следующее (без ARC):
@property (retain, nonatomic) NSDictionary *myAwesomeDictionary;
Или, с включенной ARC:
@property (strong, nonatomic) NSDictionary *myAwesomeDictionary;
Тогда в DetailViewController.m
вы получите следующее:
@synthesize myAwesomeDictionary;
Тогда вы измените свой блок кода следующим образом:
if([Children count] == 0) {
DetailViewController *dvController = [[DetailViewController alloc] initWithNibName:@"DetailView" bundle:[NSBundle mainBundle]];
[dvController setMyAwesomeDictionary:dictionary];
[self.navigationController pushViewController:dvController animated:YES];
}
Предполагается, что NSDictionary
с именем dictionary
, который вы создали несколькими строками выше, - это данные, которые вы хотели бы показать в своем DetailViewController
.
Затем в вашем методе DetailViewController
viewDidLoad:
вы можете получить доступ к этому словарю с помощью self.myAwesomeDictionary
и делать с ним все, что вам нужно.
Отказ от ответственности:
Кажется, что две вещи противоречат стандартам стиля кода Apple в вашем коде:
- Ваш
AppDelegate
хранит вашу модель (ваш список). - Apple говорит, что вы не должны собирать свои AppDelegate
глобальными данными / логикой. В общем, пишите только код, который относится конкретно к классу в этом конкретном классе.
- Вы не анализируете свой список в пользовательских объектах. - Это затрудняет кодирование, потому что вам постоянно приходится выяснять, что представляют собой ваши универсальные объекты Array и Dictionary, и делать ваш код полностью нечитаемым для других людей.
- Некоторые имена переменных вашего экземпляра пишутся с большой буквы. Например,
NSArray *Children
должно быть NSArray *children
и CurrentLevel
должно быть currentLevel
. Только имена классов имеют первую букву заглавной.
Проверьте http://jlawr3nc3.github.com - в частности, мой пример кода CompanyRecords для получения информации о том, как создать класс, и FunWithArrays, как проанализировать plist в пользовательских объектах. Затем MusicLibraryiOS изучает, как взять список, разобрать его в пользовательские объекты, а затем отобразить его в UITableView
вместе с подробным представлением.