4

レスポンダー チェーンを迅速に使用する際に問題が発生しました。

次のようなnilターゲットを使用してボタンターゲットをセットアップすると:

someButton.addTarget(nil, action:"addButtonTapped:", forControlEvents: .TouchUpInside)

アクションがコントローラーで処理されるまで、アクションはレスポンダー チェーンに送信されます。ここまでは順調ですね :-)

しかし、私はアクションをインターセプトし、いくつかのコードを実行して、コントローラーに中継したいと考えています。しかし、これを迅速に行う方法が見つかりません。ObjC ではこのタスクは簡単に実行できるので、Swift にも方法があるはずです。

助けてくれてありがとう:-)

4

2 に答える 2

0

現在のView Controllerを閉じた後、別のView Controllerを表示したかったのです。コンテナView Controllerには、別の MyContainerViewControllerView Controllerを開く機能があります。レスポンダー チェーンを使用して、現在の View Controller を閉じた後に別の View Controller を提示すると、参照を保持したり、親 View Controller をキャストしたりする必要がなくなります。これは、ネストされた子およびコンテナーのビュー コントローラーを多数使用する場合に特に便利です。

class SomeChildViewController: UIViewController {
    @IBAction func closeAndShowSomething(sender: Any?) {}
        let showSelector = #selector(MyContainerViewController.showSomething(_:))
        let viewController: Any? = next?.target(forAction: showSelector, withSender: nil)
        dismiss(animated: true) {
            UIApplication.shared.sendAction(showSelector, to: viewController, from: self, for: nil)
        }
    }
}
于 2016-12-06T17:36:30.367 に答える