ios Swift: Übergabe von Daten aus tableView anzeigen-controller

geben Sie eine Bild-Beschreibung hiergut, das ist mein erstes mal eine Frage stellen ja nicht sicher, wie es funktioniert. Ich mache eine Zuordnung zu swift. Ich stecke an einem Punkt, wo ich brauche, um übergeben Sie die Daten von tableview mit viewcontroller zu. Bei meinem ersten ViewController, ich habe eine Liste von Daten (- Kategorien) kommen aus der Datenbank-Tabelle, und wenn der Benutzer klickt auf eine Zelle, es sollte mit dem nächsten viewcontroller die Bezeichnung zu der Rubrik. Bitte meinen Screenshot angehängt.

Dank

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return values.count;
}    

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! CategoryList_TableViewCell
    let maindata = values[indexPath.row]
    cell.categoryLabel.text = maindata["NAME"] as? String
    return cell;

}

Versuchte ich mit didSelectRowAtIndexpath und perparesegue Funktionen, aber nicht immer meinen Kopf um.

kann jemand kann mich.

Tausend Dank im Voraus 🙂

ios Swift: Übergabe von Daten aus tableView anzeigen-controller

  • bitte zeigen Sie uns, was Sie haben, versuchen Sie es mit didSelectRowAtIndexpath.
  • Bewegen Sie sich mit einem übergang zur nächsten viewController? Was ist die id?
  • ja, ich bin bewegt, wird der übergang zu dem nächsten viewcontroller (subCategoryVC.swift). die Namen der Bezeichner „catView“.
  • Nirav D, ich habe die screenshot und bearbeitet meine post.
InformationsquelleAutor Sarah Malik | 2016-10-12



2 Replies
  1. 5

    Brauchen Sie nicht zu implementieren didSelectRow nur für die übergabe von Daten über eine segue. Angenommen, Sie sind mit Storyboards.

    1. STRG-ziehen aus der Prototypen-TableViewCell in das storyboard zu der ViewController, die Sie wollen, um die übertragung von Daten.

    2. Wählen Sie Zeigen für den übergang-Typ, und geben Sie einen Bezeichner

    3. Tun dies in prepareForSegue:

      if segue.identifier == "catView" {
          if let indexPath = self.tableView.indexPathForSelectedRow {
              let controller = segue.destinationViewController as! YourViewController
              let value = values[indexPath.row]
              controller.catTitleRec = value["NAME"] as! String
      }
    • hi, danke für die Hilfe. Ich habe versucht zu Folgen, diese Lösung aber immer noch die Fehlermeldung “ Konnte nicht gegossen Wert vom Typ ‚__NSDictionaryM‘ (0x10ad710e0) zu ‚NSString‘ (0x10a378ab8). in meiner Ausgabe-Konsole. „
    • Welche Zeile den Fehler verursacht?
    • controller.catTitleRec = Werte[indexPath.Zeile] als! String . Es veranlasste mich zu verwenden wie! String, so fügte ich hinzu und starten Sie das Programm. Wenn ich klickte auf eine der Zelle kam es wieder zu xcode und zeigte mir diesen Fehler msg in meine Konsole
    • Sie können nicht werfen ein dictionary einen string, so versuchen Sie dies:
    • let value = values[indexPath.row] controller.catTitleRec = value["NAME"] as! String
    • nighttalker, vielen Dank!!!! es funktioniert jetzt. Noch einmal vielen Dank für Ihre Zeit und Mühe 🙂
    • Kein problem 🙂 Bitte markieren Sie meine Antwort als angenommen, danke.
    • hey nighttalker, ich habe noch eine Frage an dich 🙁 . Jetzt bin ich immer die Daten angezeigt, die auf meinem Ziel-VC, aber immer noch meine Daten nicht filtern. wie du siehst in meinem screenshot habe ich die Gruppe der Kategorien angezeigt, wenn jemand auf die Zelle, in der Ziel-VC es Sortieren soll alle sub-Kategorien, der fällt hinein. (für zB. wenn ich auf HAUSTIERE/TIERE, es hat seine sub-Kategorie wie Katze, Hund, Kühe). Diese Daten kommen aus der Datenbank. Um dies zu testen, lief ich die sql, und seine feine. Ich kann Sie nicht einfach, diese Arbeit hier draußen. Vielen Dank im adv 🙂

  2. 1

    Tun dies in Ihrer didSelectRowAtIndexPath:

    let maindata = values[indexPath.row]
    self.performSegueWithIdentifier("yourIdentifier", sender: mainData)

    Dann in Ihrer prepareForSegue Funktion, dies zu tun:

    let destinationVC = segue.destinationViewcontroller as! YourCustomViewController
    destinationVC.yourObject = sender as! YourObject
    • hi, vielen Dank für Ihre Antwort. Wie Sie sagen, YourObject – es ist der Wert der Zelle (text), aber ich bin nicht in der Lage, um das Objekt, können Sie mir bitte helfen, wie kann ich rufen Sie das Objekt. Dank
    • Ok, dann haben Sie nur machen es zu einem String. sender as! String. Und in Ihrer Ziel-VC müssen Sie deklarieren einige Variablen, wo kann dieser Wert in.
    • in meinem Ziel-VC habe ich die variable setzen. Ich habe versucht zu tun, als Absender! String, sondern gibt einen Fehler „Thread 1: signal SIGABRT‘
    • dies ist, was ich habe:
    • func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { lassen maindata = Werte[indexPath.Zeile] selbst.performSegueWithIdentifier(„catView“, Absender: maindata) } override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { es sei Ziel = segue.destinationViewController wie? SubCatergory_ViewController Ziel!.catTitleRec = Absender! String }
    • Bitte aktualisieren Sie Ihre Frage mit dem zusätzlichen Quell-code statt der Entsendung es zu den Kommentaren, es ist sehr schwer zu Lesen :). Setzen Sie ein print("sender value: \(sender)") am Anfang Ihrer prepareForSegue – Funktion und betrachten Sie die Ausgabe in der Konsole. Es sollte zeigen Sie den Typ des Objekts
    • Ich sehe den Wert in der Konsole und es zeigt, “ Absender-Wert: Optional(SONSTIGE) „
    • sorry ich meine ich bekomme die Ausgabe in der Konsole “ Absender-Wert: Optional({ NAME = „ANDERE“; „
    • Hi, wenn ich mit Absender! String, erhalte ich diese Ausgabe in meiner Konsole “ ‚mobTechAssignmet2.CategoryList_TableViewCell‘ (0x104036470) zu ‚NSString‘ (0x104476ab8). „
    • So druckt er das gesamte Objekt, richtig? Was brauchen Sie in Ihrer Ziel-VC? Nur, dass man String oder das ganze Objekt? Je nachdem, was Sie tun müssen die richtige Besetzung.
    • ich brauche nur, dass man string name ( Wert in der Zelle) angezeigt werden, auf meine nächste view-controller

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.