Ios 向第一响应者发送操作';如果它';它不是初始视图控制器

Ios 向第一响应者发送操作';如果它';它不是初始视图控制器,ios,swift,Ios,Swift,我在这里尝试创建类似于SpringApp中代码菜单的滑动菜单(请参见CodeViewController): 只要SpringViewController是初始视图控制器,它就可以正常工作 如果我创建另一个ViewController并将其设置为初始值,则不会调用minimizeView/maximizeView: UIApplication.sharedApplication().sendAction("minimizeView:", to: nil, from: self, forEven

我在这里尝试创建类似于SpringApp中代码菜单的滑动菜单(请参见CodeViewController):

只要SpringViewController是初始视图控制器,它就可以正常工作

如果我创建另一个ViewController并将其设置为初始值,则不会调用minimizeView/maximizeView:

UIApplication.sharedApplication().sendAction("minimizeView:", to: nil, from: self, forEvent: nil)
在该方法中,“to:”设置为nil以使用第一响应程序。所以,当SpringViewController不再是初始视图控制器时,它就不再是第一响应者


如何修复它以使SpringViewController中定义的minimizeView和maximizeView操作始终有效?

我找到了使用通知中心的解决方法

在SpringViewController中添加:

override func viewDidLoad() {
  super.viewDidLoad()

  // Add observer in notification center
  // It receives notifications from menu
  NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: "minimizeView:",
    name: "minimizeView",
    object: nil)
  NSNotificationCenter.defaultCenter().addObserver(
    self,
    selector: "maximizeView:",
    name: "maximizeView",
    object: nil)
  }
在选项ViewController中:

  override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)
    // skipped ...
    // Post notification
    NSNotificationCenter.defaultCenter().postNotificationName("minimizeView", object: nil)
  }

@IBAction func closeButtonPressed(sender: AnyObject) {
    // skipped...
    // Post notification
    NSNotificationCenter.defaultCenter().postNotificationName("maximizeView", object: nil)
    // skipped...
}
这使maximizeView和minimizeView正常工作。我想知道第一响应者的方法是否更好