1259 Stimmen

Wie kann ich die UITableView-Auswahl deaktivieren?

Wenn Sie auf eine Zeile in einer UITableView wird die Zeile hervorgehoben und ausgewählt. Ist es möglich, dies zu deaktivieren, so dass das Antippen einer Zeile nichts bewirkt?

24 Stimmen

Die ursprüngliche Frage hat einen schlechten Titel. OP will in erster Linie zu deaktivieren selection und natürlich highlighting wird damit deaktiviert. Viele hochrangige Antworten erklären, wie man disable selection und befasst sich nicht mit der Deaktivierung highlighting . Um nur die Hervorhebung zu deaktivieren, verwenden Sie cell.selectionStyle = .None oder gehen Sie zu storyboard / cell / Selection = None

0 Stimmen

Bitte aktualisieren Sie entweder den Titel oder den Beitrag. Ich bin verwirrt. Und angesichts dieser Frage habe ich keine Ahnung, was die gegebenen Antworten bewirken sollen.

37voto

Aks Punkte 7821

Falls jemand eine Antwort braucht für Schnell :

cell.selectionStyle = .None

1 Stimmen

Wir können auch dies verwenden cell.selectionStyle = UITableViewCellSelectionStyle.None

36voto

Chris Fox Punkte 601

Wenn Sie möchten, dass die Auswahl nur blinkt und nicht im ausgewählten Zustand bleibt, können Sie in

didSelectRowAtIndexPath

die folgenden

[tableView deselectRowAtIndexPath:indexPath animated:YES];

so dass der gewählte Zustand blinkend angezeigt wird und zurückkehrt.

3 Stimmen

Bei diesem Ansatz wird die Zeile sofort hervorgehoben und dann für eine halbe Sekunde ausgeblendet. So gestaltet Apple seine Einstellungsmenüs, und das finde ich gut.

31voto

user41806 Punkte 539

Von der UITableViewDelegate Protokoll können Sie die Methode willSelectRowAtIndexPath y return nil wenn Sie die Zeile nicht markieren wollen.

Auf dieselbe Weise können Sie die willDeselectRowAtIndexPath Methode und return nil wenn Sie nicht wollen, dass die Zeile abgewählt wird.

6 Stimmen

Diese Methode gefällt mir nicht, da die Zelle bis zum Auffrischen immer noch hervorgehoben dargestellt wird.

2 Stimmen

Genau deshalb mag ich es :-)

31voto

Ahsan Ebrahim Punkte 1732

Das verwende ich, in cellForRowAtIndexPath diesen Code schreiben.:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

29voto

parvind Punkte 847

1- Alles, was Sie tun müssen, ist den Auswahlstil auf der Seite UITableViewCell Instanz entweder mit:

Objektiv-C:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

ou

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Mauersegler 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Mauersegler 3:

cell.selectionStyle = .none

2 - Nicht umsetzen - tableView:didSelectRowAtIndexPath: in Ihrer Tabellensicht delegate oder schließen Sie explizit die Zellen aus, für die Sie keine Aktion wünschen, wenn Sie sie implementieren.

3 - Weiter, Sie können es auch aus dem Storyboard tun. Klicken Sie auf die Tabelle Ansicht Zelle und in der Attribute Inspektor unter Tabelle Ansicht Zelle, ändern Sie die Dropdown neben Auswahl auf Keine.

4 - Sie können die Hervorhebung von Tabellenzellen mit dem folgenden Code deaktivieren (iOS) Xcode 9 , Swift 4.0

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "OpenTbCell") as! OpenTbCell
        cell.selectionStyle = .none
        return cell

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X