2017-08-21 3 views
0

前のView Controllerを参照する方法次のようなifステートメントを使用したいと思います。前のUINavControllerを取得

if previousViewController = searchController { 
//preform a method 
}else if previousViewController = notificationController { 
//preform another method 
} 

ただし、以前のビューコントローラへの参照はどのように取得できますか?たとえば、コントローラBを表示するためにビューコントローラAのボタンをクリックした場合、コントローラAを参照するようにしたいと思っています。私は同様の質問を見ましたが、回答が見つからないようです私は十分です。事前に感謝します

+0

「以前のビューコントローラ」とは、具体的にはどういう意味ですか? –

+0

申し訳ありません私は自分自身をよく説明してください。だから私がコントローラBを見るために私を連れて行くビューコントローラAのボタンをクリックすると、コントローラAの表示を参照したいと思うのですか? @AshleyMills –

+0

BはモーダルVCとして提示されていますか?またはUINavigationVCを使用してプッシュしますか? – nathan

答えて

1

これは私の好みの方法は、ViewControllerBにプロパティを追加して使用方法を示すことです。たとえば...提示するビューコントローラで、その後

class MyViewController: UIViewController { 

    enum Mode { 
     case search, notify 
    } 

    var mode = Mode.search 

    override viewDidLoad() { 
     super.viewDidLoad() {  
      configure() 
     } 
    } 

    func configure() { 
     switch mode { 
     case .search: 
      // configure for search results 
     case .notify: 
      // configure for notification 
     } 
    } 
} 

class SearchViewController: UIViewController { 
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {   
     if let mvc = segue.destination as? MyViewController { 
      mvc.mode = .search 
     } 
    } 
} 

またはこのメソッドを使用して、あなたのNotificationViewController

から提示場合mvc.mode = .notifyを設定するには、MyViewControllerは任意の知識を持っている必要はありません。それがどのように提示されたかによって、あなたはそれをnavスタックにプッシュするか、またはSearchViewControllerDownloadViewControllerに変更することは重要ではありません。

+1

最後のコメントは無視されます。それは完全に動作します!どうもありがとうございました –

関連する問題