2011-06-06 40 views
5

在iphone應用 我需要傳遞一些值到一個新的viewcontroller對象,而它從另一個viewcontroller類中的方法創建,所以我可以初始化(id)initWithNibName中的值:new viewcontroller的方法然後我可以在viewdidLoad方法中加載這些值。參數傳遞與initWithNibName:

我想知道的是如何傳遞的值(參數)到一個新的viewcontrollor對象一樣構造在java中 重載的構造函數(initWithNibName)給我一些代碼示例只是顯示initWithNibName如何調用額外的參數和如何檢索他們在新創建的對象 謝謝...


回答


這是我解決問題的方式「觀察一個物體的機智^ h屬性」 在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]; 

它工作正常。我很高興,如果有人從中得到

+0

非常非常好...我正好想要這個...感謝一噸。 – viral 2012-01-06 14:08:45

回答

7

幫助您應該創建在你的類另一個初始化,像

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

並且不要忘記在你的.h中聲明初始化器(upvotted) – Jorge 2011-06-06 07:39:57

+0

你的初始化器應該是這樣的第一行:'self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil];'用於正確的初始化。 – JeroenEijkhof 2011-06-06 07:53:49

+0

謝謝你們,我在你的幫助下做到了。創建另一個初始化程序並將數據傳遞給對象並將該數據加載到viewDidLoad方法中的字段 – 2011-06-06 09:16:17

0

另一種解決方案是有一個屬性,用於參數和之前或之後將其設置調用使用下面的代碼:

initWithNibName:bundle: