の行をタップするとUITableView
、その行が強調表示されて選択されます。これを無効にして、行をタップしても何も起こらないようにすることは可能ですか?
10 に答える
cell.selectionStyle = UITableViewCellSelectionStyleNone;
また[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
-tableView:didSelectRowAtIndexPath:
さらに、に実装しないか、実装table view delegate
する場合はアクションを実行しないセルを明示的に除外するようにしてください。
tableView:willSelectRowAtIndexPath:
のデリゲートメソッドを実装して戻ります。このメソッドからnilUITableView
を返すと、テーブルビューに行を選択しないように指示されるため、メソッドは呼び出されません。ただし、これを行っても行の強調表示は妨げられません。行の強調表示効果を無効にするには、セル選択スタイルを次のように設定します。上記の回答で説明されています。nil
tableView:didSelectRowAtIndexPath:
UITableViewCellSelectionStyleNone
設定するだけ:
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
強調表示を停止したい場合は、次のコードを使用します。希望する値を19にする
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexpath.row == '19')
cell.selectionStyle = UITableViewCellSelectionStyleNone;
else
cell.selectionStyle = UITableViewCellSelectionStyleGray;
}
ただし、セルの選択を制御したい場合
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if(indexpath.row == '19')
[tableView deselectRowAtIndexPath:indexPath animated:NO];
}
Swift 3の場合:
cell.selectionStyle = UITableViewCellSelectionStyle.none
受け入れられた答えは私のために働いていませんでした。この問題は、次のビューが読み込まれたときにどの選択でも「グリッチ」のように見えるため、しばらくの間私を夢中にさせます。
私の解決策:実際のTableViewCell(作成したカスタムセル)の.xibファイルに移動して、セルを選択し、CellViewを選択する必要がありました。(セル内のサブビューではなく、セルを選択していることを確認してください。写真のように青色に変わります)。左側で[選択]->[なし]をクリックします。これはコードで行うのとまったく同じである必要がありますが、何らかの理由で機能していませんでした...
これはカスタムセルがある場合ですが、答えを探していたときにこの質問を見つけたので、他の人に役立つ場合に備えて、ここに置いておきたいと思いました。
カスタムセルに移動し、メソッドでに設定selectionStyle
します。.none
awakeFromNib
override func awakeFromNib() {
super.awakeFromNib()
// disable selection
selectionStyle = .none;
}
このカスタムセルを複数ので使用する場合は、使用UITableView
するたびにではなく、カスタムセルに1回だけ設定する必要がありUITableView
ます:)
Swift4の場合
cell.selectionStyle = UITableViewCell.SelectionStyle.none
あなたはOBJCのためにこれを簡単に行うことができます:
cell.selectionStyle = UITableViewCellSelectionStyleNone;