Передача параметра с помощью initWithNibName: - PullRequest
6 голосов
/ 06 июня 2011

в приложении для iphone Мне нужно передать некоторые значения новому объекту viewcontroller, пока он создается из метода в другом классе viewcontroller, чтобы я мог инициализировать эти значения в (id) initWithNibName: метод нового viewcontroller, а затем я могу загрузить эти значения в метод viewdidLoad.

я хочу знать, как передать значения (параметры) в конструктор (initWithNibName) нового объекта viewcontrollor, например, перегрузка конструктора в Java дайте мне пример кода, просто показывающий, как initWithNibName вызывается с дополнительными параметрами и как получить их во вновь созданном объекте Спасибо ...


Ответ


так я решаю проблему "Наблюдение - это объект с атрибутами" во ViewControllor.h ставлю

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil set:(Observation *)observation;

в файле ViewControllor.m я положил

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil set:(Observation *)observation{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
    // Custom initialization on passed parameter observation object         
    draftObservation = observation;
}
return self;

}

тогда я называю это так в другом классе

 ObsevationListView *obsevationListView = [[ObservationViewControllor alloc]  
                                          initWithNibName:@"ObservationViewControllor" 
                                          bundle:nil set:observer];
[self.navigationController pushViewController:obsevationListView animated:YES];

работает нормально. Я рад, если кто-нибудь получит помощь от этого

Ответы [ 2 ]

8 голосов
/ 06 июня 2011

Вы должны создать еще один инициализатор в вашем классе, что-то вроде

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andParam:(id)aParam {
...
self.param = aParam;
}
0 голосов
/ 06 июня 2011

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

initWithNibName:bundle:

...