2017-01-06 4 views
0

Ich habe ein seltsames Problem. Ich habe zwei Übergänge, die durch Schaltflächen in einem Tabellenansicht-Controller ausgelöst werden, der der Stammansicht-Controller eines Navigationscontrollers ist. Ein Segment wird ausgelöst, das andere nicht. Sie stammen von zwei verschiedenen Tasten mit zwei verschiedenen Kennungen.Button Aktiviert Segue nicht aufgerufen

Ich legte einen Haltepunkt in prepare(for segue: UIStoryboardSegue, sender: Any) und ich kann überprüfen, dass die zweite Schaltfläche es nicht aufruft. Irgendwelche Ideen würden geschätzt werden.

Mein Code ist:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "locationViewSegue", let destinationViewController = segue.destination as? LocationViewController { 
      destinationViewController.delegate = self 
      destinationViewController.weatherData = self.weatherData 
      destinationViewController.wxObservationStationsArray = self.wxObservationStationsArray 
      destinationViewController.newCoordinates = self.weatherData.locationCoordinates 
     } else if segue.identifier == "searchPriorLocations", let destinationViewController = segue.destination as? SearchBarTableViewController { 
      destinationViewController.priorForecastLocations = self.priorForecastLocations 

     } 
    } 

Mein Storyboard folgt mit dem anstößigen segue hervorgehoben: Storyboard

Irgendwelche Gedanken auf, dies würde geschätzt.

+0

Haben Sie [hier] (https://stackoverflow.com/questions/21619139/preparorsegues-is-not-getting-when-i-click-on-a-button-without-using-per/ 40050522 # 40050522) – Honey

+0

Könnten Sie einen Ausdruck in die prepare (for segue: ...) -Methode schreiben, um zu sehen, ob er von der Tastenaktion aufgerufen wird? – darkndream

+0

Sie haben uns zwei Segmente gezeigt, aber nur ein Segment nach IB-Definition. Ich würde mich darauf konzentrieren. (1) Haben Sie einen Haltepunkt für die "else" -Klausel gesetzt (segue == "searchPriorLocations")? War es getroffen? (2) Irgendwelche Fehler? Wo ist der Code für den "zweiten Knopf"? – dfd

Antwort

1

Ich habe zwei von Tasten ausgelöst segues

ich, dass nicht in der Tat werde vorschlagen, Sie dies nicht tun. Ein der Übergänge wird vielleicht durch einen Knopf ausgelöst; das ist das, das wie erwartet funktioniert - das Segment wird ausgelöst, wenn die Taste angetippt wird. Aber das andere Segment, obwohl es existiert, geht nicht von dem anderen Knopf aus; Es stammt von der Zelle oder vom View-Controller als Ganzes.

Die Art und Weise, dies zu überprüfen, ist die Taste auswählen und die Verbindungen Inspector anzuzeigen:

enter image description here

Wenn Sie das nicht sehen - eine „Aktion“ ausgelöst segue mit der Taste zugeordnet - Durch Antippen der Schaltfläche wird das Segment nicht ausgelöst.

+0

* stammt aus der Zelle * du meinst was? – Honey

+1

@Honey die Zelle selbst ist tappable (wählbar), so dass es auch eine Aktion haben kann: Sie tippen auf eine Zelle und Sie segue. Sicher haben Sie das gesehen. – matt

+0

@matt: Die IB, die ich zeigte, ist das Segment, dass funktioniert nicht, ich habe den Inspektor der Verbindung überprüft und es zeigt es als einen Trigger-Übergang zum SearchBarTableViewController.Wenn ich die Maus über die Schaltfläche bewege, wird der Übergang hervorgehoben, ebenso wie der VC.Auch trigger ich ihn nicht aus irgendeiner Zelle , nur th e Taste. Das Auslösen aus einer Zelle wird ein späteres Experiment sein. :) – Yrb

Verwandte Themen