2016-12-15 105 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 
    }