Keine der obigen Antworten spricht das Problem wirklich richtig an. Der Grund ist, dass wir die Auswahl der Zelle deaktivieren möchten, aber nicht unbedingt die Unteransichten innerhalb der Zelle.
In meinem Fall präsentierte ich einen UISwitch in der Mitte der Reihe und wollte die Auswahl für den Rest der Reihe (die leer ist) deaktivieren, aber nicht für den Schalter! Der richtige Weg, dies zu tun, liegt daher in der Methode
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
wo eine Erklärung des Formulars
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
Deaktiviert die Auswahl für die bestimmte Zelle, während der Benutzer gleichzeitig den Schalter betätigen und somit den entsprechenden Selektor verwenden kann. Dies gilt nicht, wenn jemand die Benutzerinteraktion über das deaktiviert
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
Methode, die lediglich die Zelle vorbereitet und keine Interaktion mit dem UISwitch zulässt.
Darüber hinaus mit der Methode
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
um die Auswahl der Zelle mit einer Anweisung des Formulars aufzuheben
[tableView deselectRowAtIndexPath:indexPath animated:NO];
zeigt weiterhin die ausgewählte Zeile an, während der Benutzer auf die ursprüngliche Inhaltsansicht der Zelle drückt.
Nur meine zwei Cent. Ich bin mir ziemlich sicher, dass viele dies nützlich finden werden.