2015-02-19 8 views
11

Mam problem z moją komórką widoku tabeli. Nie mogę wyłączyć podświetlenia zaznaczenia komórki tabeli po powrocie z widoku szczegółów do widoku głównej tabeli za pomocą przełącznika z wbudowanym kontrolerem nawigacyjnym. Komórka tabeli jest wciąż wybrana. Nie chcę wyłączenia zaznaczenia komórki tabeli, gdy kliknę jedną z nich, aby wyświetlić szczegóły. Chcę je wyłączyć dopiero po powrocie z widoku szczegółów.Jak wyłączyć zaznaczenie zaznaczonej komórki tabeli po powrocie z widoku szczegółu (Back Segue)

Odpowiedz

30

Mam to teraz. Tak rozwiązałem. To prosta teoria.

Po prostu wyłącz go, gdy wybieramy wiersz

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 
} 
+1

Dlaczego znak zapytania po 'tableView'? Jest typu 'UITableView', a nie' UITableView? '. – BallpointBen

3

Można również wyłączyć selekcji komórek podświetlanie:

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 
    } 
} 
+0

Dziękuję. Naprawdę doceniam twoją pomoc. Nie mogę wyłączyć wyboru komórki tabeli. Chcę ukryć podświetlenie tylko po wybraniu jednej z komórek i powrocie z szczegółów. –

+0

Po prostu wyłącza podświetlanie - wybór nadal będzie działał. – Zorayr

1
self.selectionStyle = UITableViewCellSelectionStyle.None 

powinno wystarczyć w ręcznym func awakeFromNib() też :)

Wystąpił błąd krytyczny po przyjęciu powyższego kodu.

+0

To jest w porządku, ale nie pokazuje użytkownikowi nic o komórce, którą wybrał –

3

rozwiązanie dla Swift3:

Pozwoli to wybór i jest to poprawka do szybkiego 3.

cell.selectionStyle = UITableViewCellSelectionStyle.none 
0

Swift 3

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 
    tableView.deselectRow(at: indexPath, animated: true) 
} 
+0

, dlaczego odpowiedział na pytanie, które już jest takie samo jak twoje? Jeśli masz lepsze rozwiązanie, zapraszamy do edycji. –

1

tak jak lubię to robić , jeśli włączono pojedyncze zaznaczenie, należy użyć metody viewDidAppear. W ten sposób użytkownik może zobaczyć animację cofnięcia, gdy wraca do tableView.

override func viewDidAppear(_ animated: Bool) { 
    if let selectedRow = tableView.indexPathForSelectedRow { 
     tableView.deselectRow(at: selectedRow, animated: true) 
    } 
} 
+0

Dzięki za współpracę przy odpowiedzi –

Powiązane problemy