2017-10-09 1 views
2

Ich habe eine UIView mit 3 verschachtelten UIViews. Ihre Gesamtbreite beträgt 300% des Bildschirms. (Jeweils 100%). Ich ändere AutoLayout-Prioritäten, um die erforderlichen auf dem Bildschirm und andere aus dem Bildschirm mit Schaltflächen aus NavBar klicken.UITableView Element wird markiert, und dann wird abgewählt - Swift

| uiview1 | | uiview2 | | uiview3 |

uiview3 hat eine UITableView. Es füllt sich, scrollt perfekt, aber wenn man auf einen Gegenstand tippt, wird der Gegenstand für eine Sekunde hervorgehoben und dann freigegeben. Die Funktion 'didSelectRowAt' wird NICHT aufgerufen.

Ich habe versucht, jede andere auf diesem VC registrierte Geste zu deaktivieren. Der Klick wird ebenfalls erkannt, bleibt jedoch nicht bestehen und wird sofort deaktiviert.

//globally in VC 
@IBOutlet weak var salamsTable: UITableView! 

//in viewDidLoad 
self.salamsTable.delegate = self 
self.salamsTable.dataSource = self 

//delegate functions 
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
{ 
    print (indexPath.row) // this never gets called 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    return self.allSalam.count  //works perfectly 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
{ 
    var cell = self.msgsTable.dequeueReusableCell(withIdentifier: "messages") as! MessageCell 
    return cell // works perfectly 
} 

salamsTable is the subject UITableView

Visuelle Demo:

enter image description here

+1

Können Sie etwas von Ihrem Code veröffentlichen? –

+1

Bitte geben Sie den entsprechenden Code ein, wenn Sie eine Frage stellen. Es gibt viele Gründe, warum ein Problem auftritt, aber ohne einen Code zu bewerten, ist es schwierig, die Möglichkeiten einzuschränken. – PeejWeej

+0

Meine Vermutung ist, dass dies mit den Änderungen des Auto-Layouts zu tun hat. Gibt es einen Grund, warum Sie nicht einen UINavigationController oder einen UIPageViewController zum Organisieren und Anzeigen dieser drei View-Controller verwenden möchten? –

Antwort

0

keine Lösung, sondern eine Alternative. Die Dinge haben sich anders entwickelt. Wie Sie in der Demo GIF in der Frage sehen können, werden die Zellen richtig hervorgehoben. Also füge ich die Delegiertenmethode didHighlightRowAt hinzu und es funktioniert wie ein Zauber.

Verwandte Themen