2013-04-24 92 views
1

我有三個視圖控制器A,B和C.A和B都呈現視圖控制器C.我怎樣才能知道哪個視圖控制器呈現視圖控制器C?如何確定視圖控制器

P.S:我想隱藏/顯示一些按鈕,一旦我確定哪個視圖控制器呈現控制器C.

+0

您的問題尚不清楚。請解釋清楚 – Sovannarith 2013-04-24 09:55:52

+0

假設視圖控制器C已經呈現。你將如何確定視圖控制器A或B是否呈現C? – 2013-04-24 10:04:08

回答

2

只需設置int場所在C的viewController作爲fromViewController。當您從A提供視圖控制器時意味着設置爲1。如果B表示設置爲2。提交後,當您的C視圖控制器獲得通話viewWillAppear,在此方法中,基於fromViewController,您可以隱藏或顯示該特定按鈕。 [這是簡單的黑客:)]

守則C的viewWillAppear中..

if (self.fromViewController == 1) // Set from viewController while you create C in A Controller 
{ 
[_hButton setHidden:YES]; 

} 

else if (self.fromViewController == 2) 
{ 
    [_hButton setHidden:NO]; 
} 
+0

你的黑客爲我工作。謝謝:) – 2013-04-24 10:18:45

+0

如果你想走這條路,你可以使用視圖控制器視圖的標籤屬性。 – 2013-04-24 10:34:42

+0

@ 0x7fffffff在您的視圖呈現之前,您的視圖是否有被創建的機會? – Mani 2013-04-24 10:43:20

0

你可以做到這一點的方法很多,可以聲明用C視圖控制器布爾/ anyType的變量。如果您使用segues來呈現C視圖控制器,則可以爲該變量設置所需的值,並在加載C視圖控制器時使用該變量。

示例如果您正在使用segues。

​​
0

如你呈現一個模式視圖控制器,你可能會更感興趣的是visibleViewController屬性,它會給你的控制器當前視圖是否其模態呈現或推送到導航堆棧。

保存visibleViewController.nibName呈現C,在一個變量,並檢查是否提出後C :)

//before presenting VC C 
appdelegate.myController = self.navigationcontroller.visibleViewController.nibName; 

//after VC C is presented 
if([appdelegate.myController isEqualToString:@"A"]) { 

    //Write your code 
} 
else { 
    //Write other code 
} 
0

C不應該關心visibleViewController.nibName等於A或B之前關於A或B.相反,讓A和B在C中設置一些狀態,告訴它是否顯示按鈕,或讓它們自己設置爲C的委託,以便C可以詢問它們是否顯示按鈕。無論哪種方式,您都可以使用其他視圖控制器中的C而不必更改C.

相關問題