2016-12-15 23 views
0

我想寫一個class方法與兩個params刪除viewControllernavigation controller,但我不知道如何處理它。如何從navigationController的viewControllers中刪除特殊控制器?

我的代碼是下面,我測試過,沒有成功:

class func removeVC(_ fromNav:UINavigationController, _ controller:UIViewController) { 

    let controllers:NSArray = fromNav.viewControllers as NSArray 
    for item in controllers { 

     if (item as AnyObject).isMember(of:controller) { // There is not pass by Xcode 

      // remove item out of fromNav.viewControllers 
     } 
    } 
} 

如何判斷controllerclass等於帕拉姆controllerswift

回答

0

嘗試這樣

方法1)

class func removeVC(fromNav: UINavigationController, controller: UIViewController) { 

    let controllers = fromNav.viewControllers 
    for item in controllers { 

     if item == controller { 
      fromNav.viewControllers.remove(at: fromNav.viewControllers.index(of: item)!) 
     } 

    } 
} 

用法:UtilSwift.navRemoveVC(self.navigationController!, self)

方法2):

class func navRemoveVC(_ fromNav:UINavigationController, withControllerClass:AnyClass) { 

    let controllers = fromNav.viewControllers 
    for item in controllers { 
     if (item as AnyObject).isKind(of: withControllerClass.self) { 
      fromNav.viewControllers.remove(at: fromNav.viewControllers.index(of: item)!) 
     } 
    } 
} 

用法:UtilSwift.navRemoveVC(self.navigationController!, withControllerClass:UserRegisterViewController.self)

+0

你的答案是正確的,順便說一句,如果我得到一個'controller'名'String':如'ViewController2',我怎樣才能得到'導航controller'的指數? – aircraft

0

你可以試試這個:

if (item as AnyObject).isKind(of: UIViewController.self){ 
     // remove item out of fromNav.viewControllers 
    } 
相關問題