2017-06-29 6 views
0

EDIT 2: Eine halbe Lösung unten hinzugefügt. Immer noch offen für eine vollständige Lösungswift 3 Sekunden TableView-Segment wird im Navigationscontroller nicht angezeigt

EDIT 1: Bilder hinzugefügt.

Ich brauche Hilfe bei der Navigation zwischen einer zweiten und dritten Tabellenansicht.

Ich habe einen Navigationscontroller und drei Tabellenansichten. Die ersten beiden erscheinen so gut, dass das Klicken auf eine dynamische Tabellenansichtszelle> in der ersten Tabellenansicht in die zweite Tabellenansicht verschoben wird. Der zweite Tabellenansichtszellen-Chevron>, der im Storyboard festgelegt ist (Accessory: Disclosure Indicator), wird jedoch während der Laufzeit nicht angezeigt, und daher wird das Klicken auf den Tabellenzugriff nicht in die dritte Tabellenansicht verschoben. Ich brauche Hilfe, um das zu beheben.

In jedem Fall habe ich mit Strg + die Zellen mit der nächsten Tabellenansicht im Storyboard als show verknüpft und habe mich in den vorherigen Tableview-Controllern auf den Übergang vorbereitet. Aber nur einer arbeitet und der andere verwaist.

Wenn Sie eine Checkliste vorschlagen könnten, um sicherzustellen, dass der Navigation Controller über drei Tabellenansichten funktioniert, wäre dies hilfreich. Ich bin mir nicht sicher, welchen Code ich zeigen soll, also poste ich beide Segmente. Aber es ist vielleicht kein Zwischenfall, also weiß ich es nicht.

erste Tabellenansicht Weeks arbeitet zu zweiten Tabellenansicht Ligen. Lädt die json-Datei, je nachdem, was angeklickt wurde.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "toLeagues" 
    { 
      let leaguesController = segue.destination as! LeaguesViewController 
      // pass the selected row 
      let selectedRow = self.tableView.indexPath(for: sender as! UITableViewCell)!.row 
      if selectedRow == 0 
      { 
       leaguesController.weekFileName = "sports_week_1" 
      } 
      else 
      { 
       leaguesController.weekFileName = "sports_week_2" 
      } 
    } 

Aber zweite Liga Tableview funktioniert nicht an Dritte Tableview gehen Spiele

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "toGames" 
    { 

     let gamesController = segue.destination as! GamesViewController 
     // pass the selected row 
     let selectedRow = self.tableView.indexPath(for: sender as! UITableViewCell)!.row 

     gamesController.gameName = selectedRow.description 
    } 
} 

EDIT 1: Hinzugefügt Bilder:

in erster Tableview beginnt fein ...
starts off fine, get > to move to next view

Stoppt sie e in der zweiten Tableview kann nicht an Dritte weitergegeben Tableview enter image description here

EDIT 2 bewegen: Halb Lösung

ich eine halbe Lösung gefunden. Der Menüpunkt öffnet nun eine neue Ansicht, nur dass der Chevron nach der Tat erscheint. didSelectRowAt fügt den fehlenden Disclosure-Indikator direkt hinzu und wechselt zum neuen View-Controller. Konnte keine ViewWillAppear mit IndexPath finden, also entschied ich mich für didSelectRowAt. Funktioniert, wenn mindestens geklickt wird. Nur der Offenlegungsindikator fehlt beim erstmaligen Laden. Wie lade ich den accessoryType, bevor die Ansicht läuft?

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     let cell = tableView.cellForRow(at: indexPath) 
     cell?.accessoryType = .disclosureIndicator 

     // force menu to move to GamesViewController 
     let myGamesView = self.storyboard!.instantiateViewController(withIdentifier: "gamesView") 
     self.navigationController?.pushViewController(myGamesView, animated: true) 
    } 
+0

Können Sie 'cellForRow' für' LategiesViewController' hinzufügen. –

Antwort

0

Versuchen accessoryType in cellForRowAt statt didSelectRowAt Einstellung.

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "yourIdentifier") as! YourCustomCell 

    //Your other code 
    cell.accessoryType = .disclosureIndicator 
    return cell 
} 
+0

Ich sehe, so kann ich nur cell.accessoryType zur Zelle hinzufügen. Das macht Sinn. Das fixiert den Chevron. Vielen Dank. Immer noch müssen Sie die andere Ansicht öffnen, aber das funktioniert. Jetzt merke ich, dass mein zweites Segment den Text der Zelle nie zur dritten Ansicht zurückgibt. gamesController.gameName = selectedRow.description ist falsch. Ich muss den IndexPath verwenden, um die Zelle zu erhalten, um den Text zu erhalten. – sf2k

+0

@ sf2k Erhalten Sie Ihren Kommentar nicht, können Sie bitte genauer auf Ihr Problem eingehen.Auch wenn Sie mit Segue arbeiten, müssen Sie den ViewController nicht drücken, er wird automatisch gedrückt, wenn Sie die Zeile –

+0

annehmen. Mein Problem ist jetzt, dass ich das Segment nicht richtig benutze. gamesController.gameName = somethingsomething – sf2k

Verwandte Themen