2011-06-06 12 views
5

bunun başka bir viewcontroller sınıftaki bir yöntemi oluşturmak sırasında yeni viewcontroller nesnesine bazı değerleri geçmesi gerekir (kimlik) initWithNibName değerleri: Yeni viewcontroller yöntem daha sonra Bu değerleri viewdidLoad yöntemine yükleyebilirim. Ben bilmek istiyorumParametre initWithNibName ile geçen: bu yüzden sunabilmesi iphone uygulama olarak

Bana sadece initWithNibName ekstra parametreler ve birlikte denilen gösteren bazı kod örnek vermek java içinde aşırı yapıcısı gibi yeni viewcontrollor Nesne yapıcısı (initWithNibName) değerleri (parametreler) geçmesi nasıl olduğunu Bu sorunu çözmek yoludur


Cevap


... yeni oluşturulan nesne teşekkür bunları nasıl alınacağını "Gözlem bir nesne zekâ h ViewControllor.h içinde ben başka bir sınıfta bu şekilde diyoruz sonra

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

}

koymak ViewControllor.m dosyasında

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

koymak "niteliklerini

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

iyi çalışıyor. Herkes Kendi sınıfında başka başlatıcı oluşturmalıdır bu

+0

Çok çok güzel ... Ben tam bir ton bu ... Teşekkür istedi. – viral

cevap

7

yardım,

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

Ve bu başlatıcıyı .h (upvotted) – Jorge

+0

içinde bildirmeyi de unutmayın. Ayrıca ilk başlatıcınızdaki ilk satırınız olmalıdır: 'self = [self initWithNibName: nibNameOrNil bundle: nibBundleOrNil];' doğru başlatma için. – JeroenEijkhof

+0

Teşekkürler yardımlarınızla yaptım. başka bir başlatıcı oluşturmak ve veriyle nesneyi geçirip bu verileri viewDidLoad yöntemindeki alanlara yüklemek –

0

Başka bir çözüm bu parametre için bir özelliği vardır ve önce veya sonra ya da ayarlamaktır gibi bir şey alırsanız sevindim aşağıdaki kodu kullanarak çağrı:

initWithNibName:bundle: