触摸后解除Popover [英] Dismiss Popover after touch

查看:125
本文介绍了触摸后解除Popover的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 MainViewController 中创建了一个popover,当使用 UIPopoverPresentationController 触及某个按钮并设置为类似2014年WWDC展会上的代表通过以下方式展示:

I've created a popover inside my MainViewController when some button its touched using the UIPopoverPresentationController and set like it's delegate like it's showed in the WWDC 2014, in the following way :


MainViewController.swift



class MainViewController : UIViewController, UIPopoverPresentationControllerDelegate {

   @IBAction func showPopover(sender: AnyObject) {

      var popoverContent = self.storyboard?.instantiateViewControllerWithIdentifier("PopOverViewController") as UIViewController

      popoverContent.modalPresentationStyle = UIModalPresentationStyle.Popover
      var popover = popoverContent.popoverPresentationController

      popoverContent.preferredContentSize = CGSizeMake(250, 419)
      popover!.delegate = self
      popover!.sourceView = self.view
      popover!.sourceRect = CGRectMake(180,85,0,0)

      self.presentViewController(popoverContent, animated: true, completion: nil)        
   }  
}

popover里面有一个View,当用Tap Gesture Recognizer点击View时,我显示 LastViewController 使用模态segue,模态segue是通过Interface Builder创建的,而不是代码使用动作来呈现另一个 LastViewController

The popover have a View inside it and when the View it's clicked with a Tap Gesture Recognizer I show LastViewController using a modal segue, the modal segue is created through the Interface Builder, not in code using an action to present the another LastViewController

一旦 LastViewController 被解雇,我回到 MainViewController popover仍处于打开状态。

Once the LastViewController is dismissed and I'm back in the MainViewController the popover remains open.

PopOverController 中,我只有默认代码。

Inside the PopOverController I only have the default code nothing more.


LastViewController.swift



@IBAction func dismissVIew(sender: AnyObject) {        
    self.dismissViewControllerAnimated(true, completion: nil)
}

以上代码用于解除 LastViewController 触摸内部按钮后。

The above code is used to dismiss the LastViewController once the button inside is touched.


故事板

怎么能一旦另一个 LastViewController 它可见,或者在另一个 LastViewController 应该被打开之前我解雇了popover?

How can I dismiss the popover once the another LastViewController it's visible, or before the another LastViewController should be opened?

提前致谢

推荐答案

我已经回答了同样的问题< a href =https://stackoverflow.com/questions/27481756/how-to-dismiss-two-uiviewcontrollers-in-ios-8/27483252#27483252>这里

情况有所不同,但解决方案是相同的

I have already answer same problem over here.
There scenario is different but solution is same

您必须在完成当前视图控制器时编写用于关闭呈现视图控制器的代码。

在你的dismissVIew方法上写下以下代码 LastViewController.swift

You have to write code for dismiss presented view controller on completion of current view controller.
Write below code on your dismissVIew method of LastViewController.swift

 var tmpController :UIViewController! = self.presentingViewController;

        self.dismissViewControllerAnimated(false, completion: {()->Void in
            println("done");
            tmpController.dismissViewControllerAnimated(false, completion: nil);
        });



下载 link

这篇关于触摸后解除Popover的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆