2014-10-16 56 views
1

我想在viewcontroller中使用一個方法,該方法是其他viewcontroller的「容器」,但不直接是父級。我顯示一個包含定製xib文件的彈出窗口。對於我有三個viewcontrollers:iOS - 如何使用initWithViewController來定位「父」視圖控制器

1)popoverVC管理酥料餅的設定(例如α值,任意箭頭,大小,並且該方法我想從「外」 dismisspopover)

2使用)customVC帶有一個xib文件來改變我的popover(一些文本和一些按鈕)的內容。

3)mainVC從哪裏啓動彈出窗口,以及在customVC中與我的按鈕進行交互時收到哪些操作。 mainVC是customVC的代表。

我的問題是我不知道要從customVC中的操作調用popoverVC中的dismisspopover方法。開始的時候我初始化我customVC這樣從mainVC:

mainVC.m

customVC *cvc = [[customVC alloc] init]; 
    [cvc setDelegate:self]; 

    PopoverController *popover = [[PopoverController alloc] initWithViewController:cvc]; 
    [popover presentPopoverFromView:textField]; 

我試圖實例化customVC我的操作方法裏面popoverVC的新實例才能夠調用方法[popoverdismiss]。但這不應該工作,因爲我將針對從我開始的一個不同的實例...而且我想能夠定位popoverVC像[self.presentingVC],但我不確定方法in​​itWithVC設置層次結構喜歡這個。

有沒有人有想法?

回答

0

我通常去爲避免默認視圖控制器層次的方法是你的孩子視圖控制器內創建一個屬性(我認爲customVC)呼籲parent或諸如此類的話那是mainVC類型。然後爲customVC創建一個新的初始化程序,該初始化程序包含一個分配給parent的字段,或者在首次初始化customVC後分配給它。然後,只要您的customVC需要請求mainVC執行功能,您可以從parent進行方法調用。

或者,您可以輕鬆地使parent對應於您的popoverVC對象,我不完全確定您需要訪問哪個對象,但它應該像創建自己的屬性一樣簡單。

+0

非常感謝,它的工作!我不知道爲什麼我在我的目標viewcontroller中實例化一個新對象,而不是創建一個屬性,並在我第一次使用良好的viewcontroller實例化時設置它。 – Trichophyton 2014-10-16 17:07:22

相關問題