Programmatisch emulieren die Auswahl in UITableViewController in Swift
Sorry für die Frage, ohne eine Zeile code. Ich brauche Rat, wie Sie Vorgehen sollten, wenn möglich, die ich will.
Swift Sprache.
Lassen Sie uns annehmen, es gibt eine app mit zwei Controllern - UITableViewController
mit eingebetteten NavigationController
, als die wichtigsten. Wenn Sie wählen Sie eine Zeile in der Tabelle öffnet UIViewController
, die zeigt detaillierte Informationen über den ausgewählten Wert.
Ist es anders möglich? Wenn Sie die Anwendung starten, programmatisch emulieren die Auswahl der ersten Zeile in der Tabelle und sofort Anzeige UIViewController
mit detaillierten Informationen zu den ausgewählten Wert. Und von diesem controller möglich, zurück zu UITableViewController
über die NavigationController
.
Wieder einmal entschuldige ich mich und danke im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, Sie können dies tun, in swift.Laden Sie einfach Ihre
tableViewController
wie gewohnt.Sie müssen nur anrufenSwift
Den
selectRowAtIndexPath
Funktion wird nicht ausgelöst delegate-Methoden wiedidSelectRowAtIndexPath:
so müssen Sie manuell auslösen dieser Delegat-MethodeOder, Wenn Sie drängen
ViewControllers
mit segue haben Sie auslösenperformSegueWithIdentifier
Jetzt können Sie push-viewController in
didSelectRowAtIndexpath
.Wählen Sie die erste Zeile im ersten Abschnitt ausführen oder whaterver, die Sie geschrieben haben indidSelectRowAtIndexpath:
vontableView
Als Für Ihren Fall drücken Sie einfach die
viewController
auf wählen Sie bei index 0. mitdidSelectRowAtIndexPath
Wird es zeigen die view-controller geschoben und wenn Sie nicht wollen, zu animieren view-controller übergeben
NO
zupushViewController
Methode.Drücken
Back
Schaltfläche, die Sie zurück zu IhremviewController
In Ihrem Fall schreiben Sie einfach das in Ihrem
viewDidAppear
........ if firstStart { firstStart = false let rowToSelect:NSIndexPath = NSIndexPath(forRow: 0, inSection: 0) self.tableView.selectRowAtIndexPath(rowToSelect, animated: true, scrollPosition: UITableViewScrollPosition.None) self.tableView(self.tableView, didSelectRowAtIndexPath: rowToSelect) }
mein didSelectRowAtIndexPath:override func tableView(tableView: UITableView!, didDeselectRowAtIndexPath indexPath: NSIndexPath!) { self.performSegueWithIdentifier("showForecastSelectedCity", sender: self) }
[_TtC12WeatherTest229FavWeatherTableViewController tableView:didSelectRowAtIndexPath:]: unrecognized selector sent to instance 0x7f7fea81d880 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[_TtC12WeatherTest229FavWeatherTableViewController tableView:didSelectRowAtIndexPath:]: unrecognized selector sent
Was ist falsch?didSelectRowAtIndexPath
brauchen Sie nicht zu rufenself.tableView(self.tableView, didSelectRowAtIndexPath: rowToSelect)
.Können Sie auch dies einfach durch den Zugriff auf tableView Delegate Kraft "didSelectRowAtIndex" Feuer
//programmgesteuert markieren Sie eine Zeile zur Arbeit mit
//Programmgesteuert auswählen, Zeile wird nicht ausgelöst die "didSelectRowAtIndexPath" - Funktion, so müssen wir manuell die Kraft, die brennen wie pro unten
tableView.selectRow(at: indexPath, animated: true, scrollPosition: UITableViewScrollPosition.top)
undtableView.delegate!.tableView!(tableView, didSelectRowAt: indexPath)