2014-10-16 61 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

相关问题