2016-01-22 48 views
0

我有三種模式UIViewController「A」,「B」和「C」。 「A」和「C」是Portrait,「B」是「LandscapeRight」,我點擊「A」中的按鈕,「B」UIViewController會出現,如果我點擊「B」中的按鈕,「C」UIViewController會出現,當我點擊「C」按鈕,我想讓「B」 UIViewController解僱「C」之前UIViewController解僱iOS:如何解除當前UIViewcontroller中的其他UIViewcontroller

我試圖把「B」 UIViewController爲「C」,並解僱了「B」,當點擊在 「B」 按鈕

let c = UIViewController() 
c.b = self 
self.presentViewController(c, animated: true, completion: nil) 

然後我點擊按鈕,在 「C」

b.dismissViewControllerAnimated(true, completion: {() -> Void in 
    self.dismissViewControllerAnimated(true, completion: {() -> Void in 

    }) 
}) 

當「C」關閉時,「B」仍然顯示在屏幕上並沒有消失。

回答

0

在視圖控制器存在的視圖控制器消失之前,不可能關閉視圖控制器。 作爲替代方案,可以嘗試這種方式,在B添加一個布爾變量,和在乙改變變量在C.

代碼:

var shouldShow:Bool = true 

override func viewWillAppear(animated: Bool) { 
    if !shouldShow{ 
     self.dismissViewControllerAnimated(false) {() -> Void in 
      // 
     } 
    } 
} 

代碼在C:

@IBAction func clickButton(sender: AnyObject) { 
    vc!.shouldShow = false 
    self.dismissViewControllerAnimated(true, completion: {() -> Void in 
     // 
    }) 
} 
相關問題