2011-06-06 16 views
5

W aplikacji iPhone Muszę przekazać niektóre wartości do nowego obiektu viewcontroller podczas jego tworzenia z metody w innej klasie kontrolera viewcontroller, dzięki czemu mogę zainicjować te wartości w (id) initWithNibName: metoda new viewcontroller then Mogę załadować te wartości w metodzie viewdidLoad.Przesyłanie parametrów za pomocą initWithNibName:

co chcę wiedzieć, w jaki sposób przekazać wartości (parametry) do konstruktora (initWithNibName) nowego viewcontrollor obiekt np konstruktora przeciążenia w java dać mi jakiś przykład kodu tylko pokazujący jak initWithNibName nazywane dodatkowymi parametrami i jak pobierać je w nowo utworzonym obiektem Dzięki ...


Odpowiedź


w ten sposób rozwiązać problem „Obserwacja jest obiektem wit h atrybutów” w ViewControllor.h kładę

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

w pliku ViewControllor.m kładę

- (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; 

}

potem nazwać w ten sposób w innej klasie

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

to działa dobrze. Cieszę się, że jeśli ktoś uzyskać pomoc od tego

+0

bardzo bardzo ... ja właśnie chciałem to ... Dzięki za tonę. – viral

Odpowiedz

7

należy utworzyć inny inicjator w swojej klasie, coś

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil andParam:(id)aParam { 
... 
self.param = aParam; 
} 
+0

I nie zapomnij ogłosić, że inicjator w twoim .h (wznowionym) – Jorge

+0

Również twój pierwszy wiersz w boku, który inicjator powinien być: 'self = [self initWithNibName: nibNameNameOrNil pakunek: nibBundleOrNil];' dla właściwej inicjalizacji. – JeroenEijkhof

+0

Dzięki chłopaki zrobiłem to z twoją pomocą. utwórz inny inicjator i przekazany obiekt z danymi i załaduj dane do pól w metodzie viewDidLoad. –

0

Innym rozwiązaniem jest mieć właściwości dla tego parametru i ustawić go przed lub po ciebie wywołać za pomocą następującego kodu:

initWithNibName:bundle:

Powiązane problemy