UITableView's
didSelectRowAtIndexPath
に問題があります。
行を選択すると、新しいView Controllerが初期化されてプッシュされるように、テーブルがセットアップされています。
テーブル内の行を初めてタップしても、メソッドは呼び出されません。別の行を選択すると、通常どおり動作し始めます。
didSelectRowAtIndexPath
にブレークポイントを設定して、これを確認しました。メソッドにNSLog
を追加すると、新しいView Controllerを最終的にプッシュする2番目の行を選択すると、コンソールに2つのログステートメントが同時に表示されることがわかります。
助言がありますか?
誤って入力した可能性はありませんでしたでselectRowAtIndexPath?
また、xibファイルのテーブルビューの選択プロパティを確認します。必要に応じて「単一選択」または「複数選択」を使用します。
次の問題が発生しました。
私の場合、エラーはInterface BuilderでShow Selection on Touch
をチェックしていました。 IBでチェックを外すことができます:
誰かを助けることを願っています
クラスにジェスチャー認識機能を設定しているかどうかを確認します。ジェスチャーを削除することは私にとってはうまくいきました。
私は、この答えを投稿することさえ議論しました。なぜなら、これが顕現するために星は一種整列していると思うからです。
この問題のバリエーションがあり、他の解決策を確認しました。テーブルビューでは、最初のタップでテーブルの最後の行が処理されません。強調表示されていますが、didSelectRowAtIndexPath
は呼び出されていません。他のすべての行は正常に機能します。しかし、TableViewバウンスをオンにすると、問題は解決したように見えます(ただし、TableViewバウンスに対処する必要があります)。
UITableViewCellSelectionStyleNoneは、その問題を表示するセルに設定されました(ios9)。
私は電話をしました
[tableView deselectRowAtIndexPath:indexPath animated:NO];
で最初のもの
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
これは同じではありませんが、十分です。 ios10がどんな種類のテーブル破損をもたらすのか不思議に思う。
この問題は、tableView内でジェスチャレコグナイザを使用している場合にも発生します。この場合、それらを削除する必要はありません。ジェスチャプロパティcancelsTouchesInView = false
を確認する必要があります。ジェスチャーが認識されたとき。
スイフト2
これがtrueに設定されていることを確認してください。
self.tableView.allowsSelection = true
これをviewDidLoad()
の後、super.viewDidLoad()
の前の右上に置きます
クラスでUITapGestureRecognizerを設定している場合、didSelectRowAtIndexPathに次の行を追加できます。
[tableView deselectRowAtIndexPath:indexPath animated:NO];
これは私のために働いた。
Swift
UITableViewController
ではないクラスでSwift 3を使用していて、UITableViewDelegate
を使用している場合、メソッドタイトルを使用する必要がある場合があります。
@objc(tableView:didSelectRowAtIndexPath:) func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){...}
これはうまくいきましたが、プロジェクトをSwift 3に移行したばかりですが、かなり新しいため、後で修正することができます。
私のために働いたのは、「didSelect ...」と入力し始め、残りを自動修正することでした。どうやら私の構文のいくつかの詳細は不安定でした。他の人が言ったように、IDEを使用してください!!
Swift
私の場合、他の答えはどれもうまくいきませんでしたが、私にとってそれを修正したのは:
tableView.delaysContentTouches = false
私の場合、ジェスチャー認識機能付きのUITableViewセクションヘッダーがありました。ヘッダーをタップすると、そのセクションにいくつかの行が挿入され、挿入がアニメーション化されます(セクションの展開/折りたたみなど)。初めて展開してタップしたとき、didSelectRowデリゲートメソッドは起動されませんでした。さらなるタップと展開/折りたたみアクションについては、期待どおりに機能していました。
@ Ayoub Nouri による回答ごとに、cancelsTouchesInViewをfalseに設定して、問題を解決しました。 tapGestureRecognizer?.cancelsTouchesInView = false
didSelectRowAt
関数が1回目または2回目のタップでアプリで呼び出されませんでした...解決策を見つけることができなかった問題を解決しようとしていました。しかし、突然認識され、view.animationの色の変更を使用していました... Delegate
メソッドは、アニメーションが持続している間は呼び出されませんでした