1
私はこれまでにこの問題を抱えていましたが、ストーリーボードにボタンをつけていないか、機能が期待しているときにパラメータを渡していないことが原因です。今回はそれはどちらのものでもありません。パラメータを渡すときに認識されないセレクタ - TableViewセルのUIButton |スウィフトiOS
私はCellForRowAt
方法でこのコードを使用して、私のテーブルビューセル内のボタンを作成しています:
let button = UIButton(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
button.addTarget(self, action: Selector(("showPeople:")), for: UIControlEvents.touchUpInside)
button.tag = indexPath.row
cell.addSubview(button)
と、私はそうのようなshowPeople
方法宣言している:ボタンがある場合は
func showPeople(sender: UIButton) {
print("pressed")
}
を次のメッセージでプログラムがクラッシュしました:
showPeople: unrecognized selector sent to instance
しかし、私はそうのようなメソッドを宣言する場合(パラメータ削除):
func showPeople() {
print("pressed")
}
をし、それは私が推測され正常に動作しますSelector(("showPeople"))
にセレクタを変更するには、私は、パラメータを渡している方法に問題があることを意味します。なぜこれが起こっていますか?この関数はパラメータを期待しているため、:
が必要です。
。したがって、swift 2で同じ 'showPeople(sender:UIButton)'メソッドを呼び出すには 'showPeople(button)'を行い、Swift 3ではshowPeople(sender:button)を呼び出さなければなりません。 – alexburtnik
パラメータ名を省略するには、次のようにメソッドの実装でアンダースコアを追加する必要があります:func showPeople(_ sender:UIButton) – alexburtnik