デリゲートをNSUserNotificationCenterDelegate
Swift で作成するにはどうすればよいでしょうか?
ベストアンサー1
2 つのビュー コントローラー間のデリゲートに関する簡単な説明を次に示します。
ステップ1:UIViewController で、データを削除/送信するプロトコルを作成します。
protocol FooTwoViewControllerDelegate:class {
func myVCDidFinish(_ controller: FooTwoViewController, text: String)
}
ステップ2:送信クラス(UIViewcontrollerなど)でデリゲートを宣言します。
class FooTwoViewController: UIViewController {
weak var delegate: FooTwoViewControllerDelegate?
[snip...]
}
ステップ3:クラス メソッドでデリゲートを使用して、プロトコルを採用する任意のメソッドである受信メソッドにデータを送信します。
@IBAction func saveColor(_ sender: UIBarButtonItem) {
delegate?.myVCDidFinish(self, text: colorLabel.text) //assuming the delegate is assigned otherwise error
}
ステップ4:受信クラスでプロトコルを採用する
class ViewController: UIViewController, FooTwoViewControllerDelegate {
ステップ5:デリゲートメソッドを実装する
func myVCDidFinish(_ controller: FooTwoViewController, text: String) {
colorLabel.text = "The Color is " + text
controller.navigationController.popViewController(animated: true)
}
ステップ6:prepareForSegue でデリゲートを設定します。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "mySegue" {
let vc = segue.destination as! FooTwoViewController
vc.colorString = colorLabel.text
vc.delegate = self
}
}
これで動作するはずです。もちろんこれは単なるコードの一部ですが、概要は伝わるはずです。このコードの詳しい説明については、こちらのブログ記事をご覧ください。
デリゲートの内部で何が起こっているのか興味があるなら、ここでそのことについて書きました: