Ich arbeite an einem Projekt, bei dem ich eine bestimmte Zelle vorwählen muss.
Ich kann eine Zelle mit auswählen -willDisplayCell
, aber ich kann sie nicht abwählen, wenn der Benutzer auf eine andere Zelle klickt.
- (void)tableView:(UITableView*)tableView
willDisplayCell:(UITableViewCell*)cell
forRowAtIndexPath:(NSIndexPath*)indexPath
{
AppDelegate_iPad *appDelegte =
(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
if ([appDelegte.indexPathDelegate row] == [indexPath row])
{
[cell setSelected:YES];
}
}
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
AppDelegate_iPad *appDelegte =
(AppDelegate_iPad *)[[UIApplication sharedApplication] delegate];
NSIndexPath *indexpath1 = appDelegte.indexPathDelegate;
appDelegte.indexPathDelegate = indexPath;
[materialTable deselectRowAtIndexPath:indexpath1 animated:NO];
}
Kannst du helfen?
Antworten:
Verwenden Sie diesen Code
Swift 3.0:
quelle
willSelectRowAt:
. Eine vollständigere Antwort finden Sie hier: stackoverflow.com/questions/12693402/…Verwenden Sie die folgende Methode in den Delegaten der Tabellenansicht
didSelectRowAtIndexpath
(oder von überall).quelle
indexPathForSelectedRow
eine Methode und keine Eigenschaft ist.[myTable indexPathForSelectedRow]
. Ich habe mich vorher durch die Zellen geschlungen. Vielen Dank!Versuche dies:
quelle
Es kann nützlich sein, hierfür eine Erweiterung in Swift zu erstellen.
Swift 4 und Swift 5:
Schnelle Erweiterung (z. B. in einer UITableViewExtension.swift-Datei):
Verwenden Sie zB:
quelle
viewWillAppear()
Methode dem Benutzer hilft, zu verstehen, woher er zurückkommt.Bitte überprüfen Sie mit der Delegate-Methode, ob sie korrekt ist oder nicht. Beispielsweise;
zum
quelle
Swift 4:
quelle
Dies ist eine Lösung für Swift 4
einfach hinzufügen
es wirkt wie ein Zauber
Beispiel:
quelle
Zusätzlich zum Festlegen der Zelle als ausgewählt müssen Sie der tableView mitteilen, dass die Zelle ausgewählt ist. Fügen Sie
-tableView:selectRowAtIndexPath:animated:scrollPosition:
IhrerwillDisplayCell:
Methode einen Aufruf hinzu : und Sie können die Auswahl wie gewohnt aufheben.Stellen Sie sicher, dass Sie UITableViewScrollPositionNone verwenden, um ein ungewöhnliches Bildlaufverhalten zu vermeiden.
quelle
[cell setSelected:YES]
könnte weggelassen werden:selectRowAtIndexPath
kümmert sich um denselected
Zustand der ZelleDas sollte funktionieren:
Stellen Sie einfach sicher, dass materialTable und tableView auf dasselbe Objekt zeigen.
Sind Materialien mit der tableView in Interface Builder verbunden?
quelle
Basierend auf der Saikirans-Lösung habe ich dies geschrieben, was mir geholfen hat. In der .m-Datei:
Und in der Header-Datei:
Ich bin auch nicht sehr erfahren, also überprüfe es noch einmal auf Speicherlecks usw.
quelle
Wenn Sie mit dem ersten Klick eine Tabellenzelle auswählen und mit dem zweiten abwählen möchten, sollten Sie diesen Code verwenden:
quelle
Swift 4:
quelle
self.tableView(tableView, didDeselectRowAt: indexPath)
nach ,tableView.deselectRow...
weil sie nicht automatisch aufgerufen wurdeSwift 2.0:
quelle
Versuche dies
quelle
Platzieren Sie diesen Code entsprechend Ihrem Code und Sie werden Ihre Zelle abgewählt.
quelle
Kannst du das versuchen?
Es hat bei mir funktioniert.
quelle
Swift 3.0:
Um die entsprechenden Methoden in Gruppen zu halten, folgen Sie dem Abschnitt zur Protokollkonformität des Ray Wenderlich Swift Style Guide , und fügen Sie diese Erweiterung wie folgt unter Ihre View Controller-Klasse ein:
quelle
Schnell
quelle
quelle
Swift 3
Ich bin auch darauf gestoßen - wenn Sie zur Tabellenansicht navigieren oder zurückspulen, wird die zuvor ausgewählte Zeile normalerweise nicht für Sie abgewählt. Ich habe diesen Code in den Table View Controller eingefügt und er funktioniert gut:
quelle
Swift 3/4
In ViewController:
In der benutzerdefinierten Zelle:
quelle
schnell 3.0
quelle
Deaktivieren der Auswahl (DidDeselectRowAt) beim ersten Klicken aufgrund vorinstallierter Daten; Sie müssen die tableView darüber informieren, dass die Zeile bereits ausgewählt ist, damit durch einen ersten Klick die Auswahl der Zeile aufgehoben wird:
// Swift 3:
quelle
Ich habe festgestellt, dass Sie zusätzlich zum Festlegen der ausgewählten Zelle die Tabellenansicht informieren müssen, um die Zeile am angegebenen Indexpfad auszuwählen .
quelle