Как вы передаете данные между представлениями, используя UINavigationController - PullRequest
0 голосов
/ 13 января 2009

Я пытался использовать очевидный метод, описанный в следующем примере, но моя переданная переменная ( rootcategory ) по-прежнему nil для viewDidLoad в загруженном представлении.

Это мой код:

CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:[NSBundle mainBundle]];
self.categoryViewController.rootCategory = @"433";
self.categoryViewController = viewController;
[viewController release];

Я синтезирую свойство в заголовке следующим образом:

@property (nonatomic, readwrite) NSString *rootCategory;

Ответы [ 4 ]

3 голосов
/ 13 января 2009

Вы выделяете viewController и пытаетесь изменить self.categoryViewController, прежде чем он будет назначен viewController.

CategoryViewController *viewController = [[CategoryViewController alloc] initWithNibName:@"CategoryViewController" bundle:[NSBundle mainBundle]];
viewController.rootCategory = @"433";
self.categoryViewController = viewController;
[viewController release];

должно работать.

0 голосов
/ 15 ноября 2011

Ваш код верен, но viewDidLoad вызывается до того, как вы установите свойства (как указал iKenndac).

Вместо этого следует использовать метод - (void)viewWillAppear:(BOOL)animated. Как следует из названия метода, он вызывается непосредственно перед отображением представления на экране.

0 голосов
/ 13 января 2009

Я полагаю, что viewDidLoad вызывается в новом экземпляре до того, как initWithNibName: возвращается, поэтому вы будете устанавливать свои свойства после его вызова.

0 голосов
/ 13 января 2009

Как выглядит ваш заголовочный файл для CategoryViewController? Вы определили rootCategory как свойство? Это синтезировано или вы написали свой собственный сеттер и геттер?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...