ios - tag - Wie kann ich die Auswahl der UITableView-Auswahl deaktivieren?




title tag wordpress (20)

Ziel c:

  1. Unterhalb des Snippets deaktivieren Sie die Hervorhebung, deaktivieren aber auch den Aufruf von didSelectRowAtIndexPath . Wenn Sie also didSelectRowAtIndexPath nicht implementieren, verwenden didSelectRowAtIndexPath die folgende Methode. Dies sollte hinzugefügt werden, wenn Sie die Tabelle erstellen. Dies funktioniert jedoch auf Schaltflächen und UITextField innerhalb der Zelle.

    self.tableView.allowsSelection = NO;
    
  2. Unterhalb des Snippets wird die Hervorhebung deaktiviert und der Aufruf von didSelectRowAtIndexPath wird nicht deaktiviert. cellForRowAtIndexPath Sie den Auswahlstil der Zelle in cellForRowAtIndexPath auf None cellForRowAtIndexPath

    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    
  3. Unter dem Snippet deaktivieren Sie alles auf der Zelle. Dadurch wird die Interaktion mit buttons , textfields deaktiviert:

    self.tableView.userInteractionEnabled = false;
    

Schnell:

Unten sind die Swift Äquivalente der obigen Objective-C Lösungen:

  1. Ersatz der ersten Lösung

    self.tableView.allowsSelection = false
    
  2. Ersatz der zweiten Lösung

    cell?.selectionStyle = UITableViewCellSelectionStyle.None
    
  3. Ersatz der dritten Lösung

    self.tableView.userInteractionEnabled = false
    

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


Ab iOS 6.0 hat UITableViewDelegate tableView:shouldHighlightRowAtIndexPath: (Lesen Sie dazu in der iOS Documentation .)

Mit dieser Methode können Sie bestimmte Zeilen als nicht leuchtbar (und implizit nicht auswählbar) markieren, ohne den Auswahlstil einer Zelle ändern zu müssen, indem Sie die Ereignisbehandlung der Zelle mit userInteractionEnabled = NO oder anderen hier dokumentierten Techniken userInteractionEnabled = NO .


Das ist was ich benutze:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Schreiben Sie diesen Code in cellForRowAtIndexPath.


Dies ist die beste und einfachste Lösung, um zu verhindern, dass eine Zeile die Hervorhebung während der Auswahl anzeigt

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Ich möchte auch vorschlagen, dass es gelegentlich nützlich ist, kurz zu zeigen, dass die Zeile ausgewählt wurde und sie dann ausschaltet. Dies warnt die Benutzer mit einer Bestätigung dessen, was sie auswählen wollten:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
     [tableView deselectRowAtIndexPath:indexPath animated:NO];
...
}

Falls jemand eine Antwort für Swift :

cell.selectionStyle = .None

Ich benutze das, was für mich funktioniert.

cell?.selectionStyle = UITableViewCellSelectionStyle.None

Sie können die selectionStyle- Eigenschaft von UITableViewCell verwenden

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

Oder

 [cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Implementieren Sie auch nicht unterhalb von Delegaten

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { ... }

Wenn Sie eine Xib / Storyboard-Datei erstellt haben, können Sie die Eigenschaft setUserInteractionEnabled von tableview in No ändern, indem Sie sie deaktivieren . Dadurch wird Ihre Tabellenansicht schreibgeschützt.


Sie können die Auswahl der Zeile auch vom Interface Builder aus deaktivieren, indem Sie NoSelection aus der selection (der UITableView-Eigenschaften) im Inspektorbereich auswählen, wie in der folgenden Abbildung dargestellt


Sie können dies verwenden

cell.selectionStyle = UITableViewCellSelectionStyleNone;

Sie können es auch vom Storyboard aus tun. Klicken Sie auf die Tabellenansichtszelle und ändern Sie im Attribute-Inspektor unter Tabellenansichtszelle die Dropdown-Liste neben Auswahl auf Keine.


Sie müssen UITableViewCell den Auswahlstil für die UITableViewCell Instanz UITableViewCell indem Sie entweder:

Ziel c:

cell.selectionStyle = UITableViewCellSelectionStyleNone;

oder

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

Schnell 2:

cell.selectionStyle = UITableViewCellSelectionStyle.None

Schnell 3:

cell.selectionStyle = .none

-tableView:didSelectRowAtIndexPath: Sie außerdem sicher, dass Sie -tableView:didSelectRowAtIndexPath: nicht implementieren -tableView:didSelectRowAtIndexPath: Delegieren Sie in Ihrer Tabellenansicht explizit die Zellen, für die Sie keine Aktion -tableView:didSelectRowAtIndexPath: möchten, wenn Sie sie implementieren.

Mehr Infos hier und here


Sie müssen diesen Code nur in cellForRowAtIndexPath einfügen

So deaktivieren Sie die Auswahleigenschaft der Zelle: (Beim Tippen auf die Zelle).

cell.selectionStyle = UITableViewCellSelectionStyle.None

Versuche dies

cell.selectionStyle = UITableViewCellSelectionStyleNone;

und

[cell setSelectionStyle:UITableViewCellSelectionStyleNone];

und Sie können den Auswahlstil auch mithilfe von interfacebuilder festlegen.


Versuche zu tippen:

cell.selected = NO;

Es wird die Zeile bei Bedarf abwählen.

In Swift3 ...

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    let r = indexPath.row
    print("clicked .. \(r)")
    tableView.cellForRow(at: indexPath)?.setSelected(false, animated: true)
}

Wenn die Auswahl nur blinken soll und nicht im ausgewählten Zustand bleiben soll, können Sie anrufen, in

didSelectRowAtIndexPath

folgende

[tableView deselectRowAtIndexPath:indexPath animated:YES];

So wird der ausgewählte Status blinken und zurück.


Wir können Code schreiben wie

 cell.selectionStyle = UITableViewCellSelectionStyleNone;

aber wenn wir benutzerdefinierte Zelle xib über Linie haben , warnen Sie zu dieser Zeit für

benutzerdefinierte Zelle xib

Wir müssen den Auswahlstil None vom Interface Builder aus festlegen


für schnelle Abwahl

cell.selectionStyle = .None

UITableViewCell der XIB Ihrer UITableViewCell im Attribute Inspector den Wert von Selection auf None .


Schnelle Lösung mit benutzerdefinierter Zelle:

import Foundation

class CustomTableViewCell: UITableViewCell
{
  required init(coder aDecoder: NSCoder)
  {
    fatalError("init(coder:) has not been implemented")
  }

  override init(style: UITableViewCellStyle, reuseIdentifier: String?)
  {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
    self.selectionStyle = UITableViewCellSelectionStyle.None
  } 
}

UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:NO];
[cell setHighlighted:NO animated:NO];

Fröhliche Codierung !!!





highlight