2017-07-21 5 views
-2

コンテナビュー内にコレクションビューコントローラがあり、親ビューにボタンがあります - 親ビューからボタンアウトレットにアクセスできるようにコンテナビューが必要ですボタンがクリックされたときに検出して、(コンテナビューで)コレクションビューを変更します。コンテナビューコントローラの親ビューボタンにアクセスする

私はpreparesegue関数を使用しようとしましたが、動作することがわかったコードを取得できませんでした。

+0

@objc func handleButtonTap(_ notification: NSNotification) { //do something when the notification comes in } 

は、それが不要になったときに、このように、オブザーバーとしてビューコントローラを削除しないことを忘れないでくださいクリックについての情報 –

+0

正直言ってわかりません。私の親ビューは、ラジオボタン、2つのスイッチ、および "フィルタを適用"ボタンとして機能する3つのボタンを持つフィルタメニューです。したがって、ユーザーがいつフィルタを適用するかを選択した後、どの選択が行われたかを知る必要があります。 @PhillipMills – bloop

+0

親がそのコントロールアクションを含まれているView Controllerに転送する必要があるかのように聞こえます。 –

答えて

0

1つの方法は、NotificationCenterを使用し、ボタンに通知をポストして、子ビューコントローラにリッスンさせることです。

例えば、親VCで、そのように、ボタンがタップされたときに呼び出される関数に通知をポスト:ボタンをタップに応答する必要がある子VCで

@IBAction func buttonTapped(_ sender: UIButton) { 
    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "ButtonTapped"), object: nil, userInfo: nil) 
} 

は、置きますその特定の通知のリスナーとしてVCを設定するviewWillAppear:内のコードを以下同じビューコントローラで

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    NotificationCenter.default.addObserver(self, selector: #selector(handleButtonTap(_:)), name: NSNotification.Name(rawValue: "ButtonTapped"), object: nil) 
} 

、上記handleButtonTap:方法を追加します。 "ButtonTapped"通知が来たら、このメソッドを実行します。あなたが本当にコンセントをタッチする必要はありますかあなただけのことをする必要があります

override func viewWillDisappear(_ animated: Bool) { 
    super.viewWillDisappear(animated) 
    NotificationCenter.default.removeObserver(self) 
} 
関連する問題