2011-05-26 25 views
0

我有一個viewController,可以說blaVC,它通過按下按鈕調用另一個視圖控制器blubbVC。由於有4個按鈕,所有調用blubbVC與相同的筆尖,但內容應根據哪個按鈕被按下blaVC(內容將從plist加載),我需要blubbVC知道「我一直在稱爲,因爲按鈕A被按下了,所以我將從plist中加載objectForKey:@「button A」「(可以這麼說..)。如何告訴upcomming viewController通過哪個按鈕他叫

我打電話blubbVC像

- (IBAction) buttonA:(id)sender { 
blubbVC *detailView = [[blubbVC alloc] initWithNibName:@"blubbNib" bundle:nil]; 
[self.navigationController pushViewController:detailView animated:YES]; 
[detailView release]; 
} 

我試圖通過sender,但正如我在initWithNibName加載內容,sender來晚了,內容已經被加載(或試圖)和我的看法住宿空。我會怎麼做?

謝謝!

+0

你有沒有通過你的發件人BEFORE pushViewController方法?在那個時候,視圖不會被加載,它會在你按下之後加載。 – beefon 2011-05-26 18:21:28

回答

1

您應該定義一個函數,該函數說明在初始化之後,發送方(或代表哪個按鈕被按下的某個值)設置所有狀態。

例如:

[detailView setupContent:(id)sender]; 

當初始化視圖控制器,它沒有顯示。你叫pushViewController之前,調用新的功能,所以你必須:

- (IBAction) buttonA:(id)sender { 
    blubbVC *detailView = [[blubbVC alloc] initWithNibName:@"blubbNib" bundle:nil]; 
    [detailView setupContent:sender]; 
    [self.navigationController pushViewController:detailView animated:YES]; 
    [detailView release]; 
} 

如果這是真的,這是太晚了(你需要在「initWithNibName」中的數據),則要麼定義自己的-[initWithNibName: andSender:]什麼類似的,並在建立其餘州之前呼叫[super initWithNibName:]

+0

我按照你所描述的方法嘗試了方法調用,但是要晚於。正如你所說,我確實寫了自己的方法。我沒有這樣做的想法..漫長的一天^^謝謝! – Nareille 2011-05-26 18:26:21

0

你需要在你的視圖控制器中創建一個自定義的init方法。喜歡的東西:

+(id)initWithCaller:(NSString*)caller 
{ 
    if(self == [super initWithNibName:@"blubbNib" bundle:nil]) 
    { 
     calledFrom = x; 
    } 
    return self; 
} 

那只是從內存打字因此可能會有一些錯誤。然後你會在你的IBActions中使用這個新的init方法

+0

這不是類方法(不是+,但是 - )。 – beefon 2011-05-26 18:19:53

相關問題