首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在iOS中,如何让弹出窗口自动关闭?

在iOS中,如何让弹出窗口自动关闭?
EN

Stack Overflow用户
提问于 2012-03-17 06:40:22
回答 3查看 5.8K关注 0票数 2

我有一个设置弹出窗口。我在弹出窗口中有一个按钮(更多信息)。当用户单击该按钮时,我想要调出另一个视图,并且想要关闭弹出窗口。

如何在弹出窗口中的“更多信息”按钮中执行此操作?

目前,我有一个处理按钮按下的函数:

代码语言:javascript
运行
复制
 - (IBAction)showFullVersionInfo:(id)sender
   {
     [self dismissPopoverAnimated:YES];
     parent.settingsPopover = nil;

     //need to show more Info...

   }

父级持有对弹出窗口的引用'settingsPopover‘,我想清除它。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-17 07:05:41

你不会想从popover控制器内部来做这件事的。popover控制器应该只管理popover的内容,而不是如何以及何时显示/隐藏popover。

您只能在父控制器中执行此类操作。仅对显示它(并拥有它)的控制器隐藏弹出窗口。

你的问题实际上应该是:如何告诉父控制器用户已经在弹出窗口中执行了一些操作?

答案是:委托。定义一个委托,在你的父控制器中实现它,将它传递给你的popover,并在IBAction中调用委托方法。

票数 4
EN

Stack Overflow用户

发布于 2012-03-17 06:57:23

最好的方法是在popoverControllerDidDismissPopover:委托回调中释放popover。不幸的是,这个回调不会在dismissPopoverAnimated:之后调用。我通过输入另一个名为popoverDidFinishWorking:的统一回调解决了这个问题。当点击关闭按钮时,将其从弹出窗口发送给所有者,等等。当所有者获取popoverDidFinishWorking:时,它只是调用popoverControllerDidDismissPopover:并隐藏/释放弹出窗口(settingsPopover)。您还可以在此回调中显示任何其他视图。无论如何,这取决于你的应用程序设计。

票数 0
EN

Stack Overflow用户

发布于 2012-03-17 07:55:26

在启动settingsPopover的函数的“父”对象中,应该有:

代码语言:javascript
运行
复制
- (void) launchDismissSettingPopover {
    if (settingPopover == nil) {
         //Create an launch the popover
    } else {

        [self dismissPopoverAnimated:YES];
        // settingPopover will be nil in navigationController didShowViewController
         //self.settingsPopover = nil;
    }
}

在父类中之前应该有self.navigationController.delegate = self

代码语言:javascript
运行
复制
-(void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
     if (viewController == self && self.settingPopover != nil) {

        //need to show more Info based on settingPopover info here

          self.settingPopover = nil ;
      }
}

然后在您的popover类方法中

代码语言:javascript
运行
复制
 - (IBAction)showFullVersionInfo:(id)sender
   {
     [parent launchDismissSettingPopover];
   }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9745407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档