UITableViewControllerのサブクラス内で、NavigationBar上に設置したボタンを押すと行が削除されるというごく一般的な処理を実装しようとして詰まっています。
状況としては、削除ボタンを初期化する際に記述したactionが正しく機能していないためか、ボタンタップ時に指定したメソッドが呼び出せず掲題のエラーが出てしまいます。
どの部分が間違っているか教えていただけますでしょうか。
※コードは簡略化しています
Swift
1class FavoriteListViewController: UITableViewController { 2 3 var deleteButton: UIBarButtonItem? 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 self.deleteButton = UIBarButtonItem( 9 title: "削除(0)", 10 style: .plain, 11 target: self.tableView, 12 action: #selector(FavoriteListViewController.deleteSelectedRows) 13 ) 14 15 } 16 17 func deleteSelectedRows() { 18 self.selectedRowsEditing?.forEach{indexPath in 19 items.remove(at: indexPath.row) 20 } 21 } 22 23}
actionの設定とメソッドの宣言の方法を少しずつ変えた以下のパターンも試しましたが、どれも状況は変わらずでした。
Swift
1 self.deleteButton = UIBarButtonItem( 2 title: "削除(0)", 3 style: .plain, 4 target: self.tableView, 5 action: #selector(FavoriteListViewController.deleteSelectedRows(_:)) 6 ) 7 8 func deleteSelectedRows(_ sensor: UIBarButtonItem) { //UIButtonにしてもダメ 9 // *** 10 }
Swift
1 self.deleteButton = UIBarButtonItem( 2 title: "削除(0)", 3 style: .plain, 4 target: self.tableView, 5 action: #selector(FavoriteListViewController.deleteSelectedRows(sensor:)) 6 ) 7 8 func deleteSelectedRows(sensor: UIBarButtonItem) { //UIButtonにしてもダメ 9 // *** 10 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。