目次
- unrecognized selector sent to instance のエラーが出た時
- Cannot override with a stored property
refreshControl
unrecognized selector sent to instance のエラーが出た時
RefreshControlを使ってSwipe & Refreshを実装しようとした際に、 unrecognized selector sent to instance
というエラーが出ました。
selectorに指定したメソッドがないよ
っていうエラーでコードを確認したら、selectorに指定したメソッドがprivate指定してしまっていました。
Selector
で指定できるのは public
なメソッドのみ。
またこのエラーはコンパイルチェックではエラーが出なかったので、実機で動作させるまで気づきませんでした。
Cannot override with a stored property refresh control
UIRefreshControl
は 親クラスである UITableViewController
クラスのメンバ変数ですでに宣言されているため、サブクラスでの宣言もオーバーライドもできない。
親クラスに宣言されているので self.refreshControl
で当該ViewContollerでのrefreshControlの実装を編集できる
実装としては以下
override func viewDidLoad() { super.viewDidLoad() // UIRefreshControl self.refreshControl = UIRefreshControl() refreshControl?.addTarget(self, action: #selector("publicなメソッド"), for: .valueChanged) self.tableView.addSubview(self.refreshControl!) // viewにUIRefreshControlを追加 }