2016-12-15 7 views
0

classメソッドをparamsと2つ書いてviewControllernavigation controllerから削除したいと思いますが、どうすればいいのか分かりません。 controllerclassswiftでのparam 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 
     } 
    } 
} 

私のコードは、成功、私がテストし、以下ではないでしょうか?

答えて

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

あなたの答えは、ところで、右である' STRING'は、次のような 'ViewController2'は、どのように私は'ナビゲーションcontroller'の指標を得ることができますか? – aircraft

0

あなたはこれを試すことができます:私は `controller`名を取得する場合

if (item as AnyObject).isKind(of: UIViewController.self){ 
     // remove item out of fromNav.viewControllers 
    } 
関連する問題