ios - UIViewController 连续关闭调用

标签 ios iphone swift uiviewcontroller

我有三个 View Controller

  • ViewControllerA
  • ViewControllerB
  • ViewControllerC

这是我要解决的场景

  • ViewControllerA 将 ViewControllerB 推送到导航层次结构上
  • ViewControllerB 将 ViewControllerC 呈现为模态,并关闭 代表

  • 按下 ViewControllerC 关闭按钮,发送关闭委托(delegate)并关闭 ViewControllerC

  • ViewControllerB 收到关闭委托(delegate),并尝试关闭 本身所以显示 ViewControllerA

出于某种原因,ViewControllerB 没有被关闭。如果我按下 ViewControllerB 中的取消按钮,它就可以被关闭。

为什么不能连续dismiss?

ViewControllerC

@IBAction func closeClick(sender: AnyObject) {
    self.closeDelegate?.didClose()
    self.dismissViewControllerAnimated(true, completion: nil)
}

View Controller B

func didClose() {
        print("did close") // gets called
        self.dismissViewControllerAnimated(false, completion: nil) // no dismiss
        //self.navigationController?.popViewControllerAnimated(false)
}

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

最佳答案

您说您正在将 View Controller B 推送到您的导航 Controller 上。关闭 View Controller B 是不可能的,因为包含它的导航 Controller 是 Root View Controller 。

您将需要pop回到导航 Controller 的 Root View Controller ,因此 View Controller A上的委托(delegate)方法实现应该执行pop而不是dismiss。

关于ios - UIViewController 连续关闭调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36955357/

相关文章:

javascript - cocos2d-x 与 cocos2d-js 的区别

iphone - NSPredicate 的奇怪行为,

iphone - 使用新的应用程序 ID 将应用程序的更新版本上传到商店

ios - 变换动画无法重复使用

arrays - 如何使用属性观察器观察具有 Swift 集合类型的特定元素?

xcode - 快速将事件分派(dispatch)给父 ViewController

ios - Swift 将导航栏标题更改为所选表格 View 单元格的标题

ios - UISplitViewController 仅详细信息 inputAccessoryView

ios - View Controller 中有两个 View / Pane

iphone - 父 NSManagedObjectContext 在子保存后没有变化,但仅在 Release模式下(在 Debug模式下工作)