Ios 如何知道哪个popover被解雇了

Ios 如何知道哪个popover被解雇了,ios,Ios,我有一个viewcontroller,可以显示几个弹出窗口。不是同时。在popoverControllerDidDismissPopover中,哪种方法是了解正在解除哪个popover的最佳方法 我必须对被解雇的popover采取不同的行动 非常感谢在popoverControllerDidDismissPopover:中,您通过了正在解除的popover。用它来确定在每种情况下你想要做什么 您可能希望将您的UIPopoverController实例存储为呈现它们的任何对象的IVAR,然后只需与

我有一个viewcontroller,可以显示几个弹出窗口。不是同时。在
popoverControllerDidDismissPopover
中,哪种方法是了解正在解除哪个popover的最佳方法

我必须对被解雇的popover采取不同的行动


非常感谢

popoverControllerDidDismissPopover:
中,您通过了正在解除的popover。用它来确定在每种情况下你想要做什么


您可能希望将您的
UIPopoverController
实例存储为呈现它们的任何对象的IVAR,然后只需与在委托方法中传递的值进行比较。

类似的方法应该可以工作。(此代码不完整-我假设您了解基本内存和类管理以及其他内容,因此我将重点放在实际问题上)

在您的类中保留一些IVAR以存储对您创建的PopOvercontroller的引用

@interface MyClass : NSObject <UIPopoverControllerDelegate> {
    UIPopoverController *popover1;
    UIPopoverComtroller *popover2;
}
编辑:查看您的评论,您的意思似乎是您只使用了一个popovercontroller,并将其内容视图替换为不同的UIViewController

如果是这种情况,我建议您以影响应用程序状态的方式执行这些特定UIViewController中的任何操作

然后,一旦弹出框被解除,您就可以使用新的刷新状态重新加载原始视图


或者您将其更改为使用两个不同的UIPopoverController实例。

这就是从Xcode 6.3 beta 3开始的Swift中Objective-C的相似之处

  • 显示的视图本身应该有一个
    ViewController

     import UIKit
    
     class MenuBookmarksViewController: UITableViewController  {
     }
    
  • UIViewController
    类添加扩展名,或将代码(以下)放置在将显示弹出窗口的
    UIViewController
    中:

    extension UIViewController: UIPopoverPresentationControllerDelegate {
      public func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
           if popoverPresentationController.presentedViewController as? MenuBookmarksViewController != nil {
              ///do your stuff
           }
      }
    }
    

  • 嗯,我没看到。。。我不会在同一时间展示爆米花。我有一个popover可以选择日期,另一个可以在不同的值之间选择。当我使用popoverControllerDidDismissPopover时,我如何知道该popover被解除是日期还是选项?现在我使用一个NSString实例变量来知道屏幕上显示的是哪一个popover…在
    PopOvercontrollerdDismissPopover:
    中传递了popover,这是该方法的唯一参数。你在挣扎什么?也许我的问题不清楚。事实上,我需要知道哪个viewcontroller在popover中,然后,关于这个,在解雇时做一件或另一件事。然后查看
    UIPopoverController
    contentViewController
    属性,或者按照我说的做,保留对popover控制器的引用,以便您能够区分它们。非常感谢Jake。我会在两个爆米花同时运行的情况下使用,但情况并非如此。我在屏幕上只有一个弹出窗口,我需要一些方法来知道我的viewcontroller拥有的不同弹出窗口中的哪一个在屏幕上。不,它们不需要同时运行,此代码用于显示两个弹出窗口(一次显示一个)并确定用户拒绝了哪一个,就像您要求的那样。如果这不符合您的代码,我建议您发布一些代码,以便我们可以确切地看到您正在尝试做什么。
    extension UIViewController: UIPopoverPresentationControllerDelegate {
      public func popoverPresentationControllerDidDismissPopover(popoverPresentationController: UIPopoverPresentationController) {
           if popoverPresentationController.presentedViewController as? MenuBookmarksViewController != nil {
              ///do your stuff
           }
      }
    }