Ich habe eine uitableview mit einer Sammlung von Objekten. Und wenn ich auf eine UITableViewCell klicke, öffne eine andere UIView. Aber ich wollte das Objekt, das sich in UITableViewCell befindet, für diese neue UIView senden und dort ihre Details anzeigen. folgte ich diese Frage zu beantworten eine andere Ansicht zu laden: ViewController Segue Xamarin Ich bin sehr dankbar, wenn jemandSo übergeben Sie das Objekt mit Hilfe des Segments
Antwort
Überschreibung PrepareForSegue in Ihrem Viewcontroller nutzen, um Parameter auf den Ziel-Controller einzustellen. Sie müssen öffentliche Methoden oder Eigenschaften auf dem Ziel-Controller definieren, die es Ihnen ermöglichen, Parameter zu übergeben:
public override void PrepareForSegue (UIStoryboardSegue segue, NSObject sender)
{
if (segue.Identifier == "TaskSegue") { // set in Storyboard
var navctlr = segue.DestinationViewController as TaskDetailViewController;
if (navctlr != null) {
// some public method you create in your destination controller
navctlr.SetTask (this, item);
}
}
}
Es gibt ein paar Lösungen, ist zunächst ein prepareForSegue (_ verwenden: Absender :) Methode:
Diskussion Die Standardimplementierung dieser Methode tut nichts; Sie können es überschreiben, um relevante Daten an den neuen View-Controller oder Fenster-Controller zu übergeben, basierend auf dem Kontext des Segments. Das Segmentobjekt beschreibt den Übergang und enthält Verweise auf beide Controller , die am Übergang beteiligt sind.
Segues können aus mehreren Quellen ausgelöst werden. Verwenden Sie daher die Informationen in den Parametern "segue" und "sender", um zwischen den verschiedenen logischen Pfaden in Ihrer App zu disambiguieren. Wenn der Übergang beispielsweise von einer Tabellenansicht stammt, würde der Absenderparameter die Zelle identifizieren, die der Benutzer angeklickt hat. Sie könnten diese Informationen verwenden, um die Daten für den Zielansicht-Controller festzulegen.
In thi Fall, dass Sie ein Objekt zu "retten", die Sie in didSelectRow übergeben möchten:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.currentObjectToPass = .. some object from array or somewhere else..
}
Und dann legen Sie es zum nächsten vc:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(UIButton*)sender {
if ([segue.identifier isEqualToString:@"bookingDetailsSegue"]) {
self.nextVC = segue.destinationViewController;
self.nextVC.objectToPass = self.currentObjectToPass;
}
}
Der andere Weg ist es, segues zu verweigern und vc durch seine storyboardID zu bekommen.
Auf diese Weise können instantiateViewController (withIdentifier :) Methode benötigen:
Rückgabewert Der View-Controller entsprechend dem angegebenen Bezeichnerstring. Wenn der Zeichenfolge kein Ansichtscontroller zugeordnet ist, löst diese Methode eine Ausnahme aus.
Erläuterung Sie verwenden diese Methode zum Erstellen von View-Controller-Objekten, die Sie in Ihrer -Anwendung bearbeiten und programmgesteuert darstellen möchten. Bevor Sie diese Methode zum Abrufen eines View Controllers verwenden können, müssen Sie ihn explizit mit einer entsprechenden ID Zeichenfolge in Interface Builder kennzeichnen.
Diese Methode erstellt bei jedem Aufruf eine neue Instanz des angegebenen View-Controllers .
Dann wird Ihr Code wird wie folgt aussehen:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
self.nextVC = [self.storyboard instantiateViewControllerWithIdentifier:@"nextVCID"];
self.nextVC.objectToPass = = .. some object from array or somewhere else..
[self.navigationController pushViewController:self.nextVC animated:YES];
}
Und vergessen Sie nicht vc-Kennung (ID Storyboard) in IB hier einzustellen:
- 1. Abrufen des versteckten default.aspx-Segments einer URL
- 2. AngularJs Hilfe, Probleme bei der Auswahl des Arrays im Objekt, das an den Isolationsbereich übergeben wurde
- 3. So übergeben Sie SOAP-Header mit JAXWSProxyHandler
- 4. Speichern des zuvor ausgewählten Segments eines UISegmentedControl?
- 5. Übergeben Sie Objekt in Hook mit Sequelize
- 6. So übergeben Sie JSON-Objekt an neue Aktivität
- 7. So übergeben Sie Drawable mit Parcelable
- 8. So beenden Sie das Laden des UIWebView
- 9. Ändern Sie den Endpunkt eines Segments mit dem Storyboard
- 10. Mögliche Ursachen für "Zuordnung des Segments vom gemeinsamen Objekt fehlgeschlagen: Operation nicht zulässig" und Debuggen?
- 11. Auslösen des Push-Segments durch langes Drücken der Kartenansicht
- 12. So aktualisieren Sie das Objekt im React-Status
- 13. Wie übergeben Sie das aktuelle Powershell-Pipe-Objekt "$ _" als Befehlszeilenarg?
- 14. So entpacken Sie das ursprüngliche Objekt aus einem dynamischen Proxy
- 15. Idee zum Inhalt übergeben. Hilfe
- 16. Undefiniertes Objekt, das über Requirejs übergeben wird
- 17. So übergeben Sie das Funktionsargument an boost :: async()
- 18. So übergeben Sie optionale Argumente
- 19. C++ - Hilfe ein Objekt in eine andere Funktion übergeben (Objekt in Main definiert)
- 20. So übergeben Sie das Bundle von Fragment zu Fragment
- 21. So übergeben Sie das Argument an eine Par-Datei
- 22. So testen Sie HttpApplication-Objekt mit HttpApplicationState
- 23. So testen Sie Remote-Android-Hilfe-Service
- 24. Übergeben Sie aufrufende Objekt in Initialisierungsblock
- 25. So löschen Sie ein Objekt Eintrag Objekt
- 26. Brauchen Sie Hilfe Verständnis Segment des Codes
- 27. Kopieren eines Segments des Vektors in einen anderen Vektor
- 28. So ändern Sie das temporäre Verzeichnis des Android-Emulators
- 29. So speichern Sie Kontakte mit Hilfe von Kontakte-Framework
- 30. So schließen Sie das Video nach dem Beenden des ExoPlayers
Versuchen https://developer.xamarin.com/api/member/UIKit.UIViewController.PrepareForSegue/ – brandonscript