Не удается заполнить свойство объекта в контроллере uiview на iPhone - PullRequest
0 голосов
/ 27 августа 2009

У меня есть контроллер uiview с двумя свойствами: trackName и playerObject. PlayerObject также имеет свойство trackName. Я вызываю этот контроллер uiview из моего основного контроллера uiview с этим кодом:

SecondaryViewController *nextViewController = [[SecondaryViewController alloc] initWithNibName:@"SecondaryViewController" bundle:nil];
NSString *trackName = @"a track";
nextViewController.trackName = trackName;
[self.navigationController pushViewController:nextViewController animated:YES];
[nextViewController release];

В SecondaryViewController я переопределяю метод initwithnibname, чтобы установить trackName playerObject. Я делаю это с этим кодом:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
    playerObject.trackName = trackName;
}
playerObject.trackName = trackName;
return self;

}

Наконец, мой playerObject имеет все данные представления, которые понадобятся SecondaryViewController. Похоже:

- (void)awakeFromNib{
NSString *s = trackName;
    //more code relevant to the the view controller
}

Когда я отлаживаю, строка trackName в playerObject равна nil. Я предполагаю, что я делаю что-то не так. Как я могу заполнить это значение с помощью trackName, который я первоначально передал в основной контроллер uiview?

Ответы [ 2 ]

0 голосов
/ 28 августа 2009

Иногда это может происходить при переопределении initWithNibName: bundle :.

Вместо этого используйте viewDidLoad для настройки. Apple гарантирует, что все необходимые настройки выполняются до вызова этого метода (не в случае initWithNibName: bundle:).

0 голосов
/ 27 августа 2009

Похоже, что когда вы запускаете viewController, переменная playerObject еще не установлена, возможно ли это?

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