我在我的弹出控制器中有一个按钮。我想用它来关闭弹出框,因此我试图访问主视图控制器(即“根”视图控制器)的一个方法(dismissPopover)。
注意:关闭弹出框的方法已经设置好并在根VC中工作,该VC是委托。如果我调用它,它会关闭弹出框。我只需要从弹出窗口访问该方法。
为此,我在AppDelegate中设置了一个属性,并像下面这样获取了rootVC的实例:
注意:关闭弹出框的方法已经设置好并在根VC中工作,该VC是委托。如果我调用它,它会关闭弹出框。我只需要从弹出窗口访问该方法。
为此,我在AppDelegate中设置了一个属性,并像下面这样获取了rootVC的实例:
self.rootController = (ViewController*)self.window.rootViewController;
。然后,我将根VC类和AppDelegate导入到弹出视图控制器的类中,似乎给我访问根VC和方法的权限,但结果没有触发该方法。你知道我在这里缺少什么吗?#import "ViewController.h"
#import "AppDelegate.h"
按钮连接的操作:
- (IBAction)dismissPopover:(id)sender {
//Checking the button works, it does:
NSLog(@"dismissPopover, from popover");
//Trying to get an instance of the rootViewController, the "presenting view controller"
ViewController *rootVC = [(AppDelegate *)[[UIApplication sharedApplication] delegate] rootController];
//trying to access the method in the rootVC that dismisses the popover
[rootVC dismissPopover];
//Tried the following code, does nothing:
//[self dismissPopoverAnimated:YES];
}
注意:最终我放弃了使用弹出式窗口,因为它变得有点复杂。我尝试将我的视图控制器加载到一个UIView中(这样我就可以将nib文件的内容加载到一个弹出式视图中)。但这也变得有些复杂。所以,目前我只是在编程中构建我想要的界面,并将其放在一个UIView中。到目前为止,效果很棒。