我的弹出框控制器中有一个按钮。我想用它来关闭弹出框,所以我试图访问呈现视图控制器(“根”视图控制器)的方法(dismissPopover)。
注意:关闭弹出框的方法已经在根 VC(即委托)中设置并工作。如果我调用它,它将关闭弹出窗口。我只需要从弹出框访问该方法。
为此,我在 AppDelegate 中设置了一个属性,并获得了一个 rootVC 的实例,如下所示self.rootController = (ViewController*)self.window.rootViewController;
:然后我将根 VC 类和 AppDelegate 导入到弹出窗口的视图控制器的类中,如下所示。似乎让我可以访问 rootVC 和方法,但结果不会触发该方法。知道我在这里缺少什么吗?
#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 中构建我想要的界面。到目前为止效果很好。