まだまだswiftを書いていて知らないこと、学ぶこと盛りだくさんなswift初心者です。
コードでUIButtonのイベント処理を追加するときは、addTargetを使用しますが、(他を知らない)
そのとき引数のtargetにはサンプルコードにも今までの自身の経験でもselfしか見たことがありませんでした。
今回は、selfではないパターンで初めてaddTargetを使用して自身も「なるほどなぁ〜」と思ったので、
ここにメモとして書いとこうと思います。
今回はviewで定義したUIButtonをviewContorollerでボタンタップ時のイベントの処理を書いていきたいと思います。
sampleView.swift
import UIkit class SampleView: UIView { let sampleButton: UIButton override init(frame: CGRect) { self.sampleButton = UIButton(frame: CGRect(x: 50, y: 50, width: 50, height: 50) sampleButton.addTarget(SampleViewController(), action: #selector(SampleViewController.tappedButton), for: .touchUpInside) super.init(frame: frame) self.addSubview(self.sampleButton) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } }
SampleViewController.swift
import UIKit class SampleViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() sampleView = SampleView(frame: CGRect(origin: .zero, size: self.view.frame.size)) self.view.addSubview(sampleView) } @objc func tappedButton() { print("button tapped!!") } }
書いてみたら、、、「まあ、そうなるよね。。。」「当たり前だよね。。。」っていうような感じですね。
以上です!!