Как передать данные в дочерний UINavigationController, который представлен модально (т.е. через initWithRootViewController) - PullRequest
1 голос
/ 27 марта 2011

Как передать данные в дочерний UINavigationController, который представлен модально через "[[UINavigationController alloc] initWithRootViewController: newItemController];"?

Именно так и используется этот метод создания дочернего контроллера (т.е.newItemController в данном случае), он инициализируется с помощью метода initWithRootViewController UINavigationController, следовательно, здесь нет возможности вызвать пользовательский метод init newItemController?Также нет доступа к самому экземпляру newItemController для вызова пользовательского метода типа «setMyData»?

NewItemController *newItemController = [NewItemController alloc];
newItemController.delegate = self;
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:newItemController];
[self.navigationController presentModalViewController:navController animated:YES];

Ответы [ 2 ]

4 голосов
/ 27 марта 2011

В коде вашего вопроса отсутствует инициализация, вызванная для NewItemController. Например:

NewItemController *newItemController = [[NewItemController alloc] init];

Теперь, когда вы создали NewItemController, вы можете создать свой собственный init:

-(id)initWithStuff:(NSString *)example {
    self = [super init];
    if (self) {
        // do something with the example data
    }
    return self;
}

или вы можете добавить свойство в класс NewItemController

// header file
@property (nonatomic, copy) NSString *example;

// .m file
@synthesize example;

// when you create the object
NewItemController *item = [[NewItemController alloc] init];
item.example = @"example string data";
1 голос
/ 27 марта 2011

Ключ в том, что вы не передаете данные в контроллер навигации, вы передаете их корневому контроллеру контроллера навигации.

...