2016-12-06 1 views
0

tl; dr: Ich habe Probleme herauszufinden, wie ich von meinem NewTransactionViewController zurück zu meinem Haupt CollectionViewController und beim Zurückgehen die Daten aus dem NewTransactionViewController in meine Sammlung Listenansicht hinzufügen. Was ich online gefunden habe, ist entweder zu einfach für das, was ich brauche, oder zu anspruchsvoll. Im Wesentlichen versuche ich, ein UITableView nachzuahmen, aber ich benutze Sammlungen für dynamischere Fähigkeiten später (plus ich möchte die Wahl von mehrfachen Spalten).So speichern Sie Daten und segmentieren zurück zur Sammlungsansicht?

Ich bin neu in der Programmierung und versuche, eine einfache Budget-App einzurichten, um Transaktionen zu protokollieren. Ziel ist, dass der Benutzer eine neue Transaktion hinzufügt, indem er Details eingibt, und wenn er auf "Speichern" klickt, kehrt er zur vorherigen VC zurück und fügt diese Details hinzu und aktualisiert die Sammlungsansicht.

Vielen Dank im Voraus für die Hilfe!

// ViewController.swift 
import UIKit 

class NewTransactionViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate 
{ 
    //Add new transaction cell to master list 
    @IBAction func addNewTransaction(_ sender: UIBarButtonItem) 
    { 
     //Unsure how to implement 
    } 

class CollectionViewController: UICollectionViewController 
{ 
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell 
    { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as UICollectionViewCell 

     let categoryLabel = cell.viewWithTag(1) as! UILabel 
     categoryLabel.text = categoryArray[indexPath.row] 

     let balanceLabel = cell.viewWithTag(2) as! UILabel 
     balanceLabel.text = balanceArray[indexPath.row] 

     return cell 
    } 
} 

Storyboard Layout Example

Antwort

0

Von Ihrem Storyboard, es sieht aus wie Sie einen Navigationscontroller verfügen und innerhalb diesem sind der CollectionViewController die Wurzel-View-Controller. Und dann wird der NewTransactionViewController auf den Navigationscontroller geschoben.

Also, aus der Sicht des NewTransactionViewController, die CollectionViewController ist:

self.navigationController!.viewControllers[0] as! CollectionViewController 

Mit dieser Referenz können Sie nun ein Verfahren oder setzen Sie eine Eigenschaft der Sammlung View-Controller aufrufen können.

+0

Danke für die Referenz. Hilft, daran von diesem POV zu denken. – naomijp

0

Ich bin nicht sicher, ich verstehe Ihre Frage, aber ...

eine Abwickelstation seque verwenden. Siehe: What are Unwind segues for and how do you use them?

Implementieren Sie eine Abwicklungs-Aktionsaktion in CollectionViewController. ZB: @IBAction func saveNewTransation(segue: UIStoryboardSegue) { }

Stellen Sie sicher, diese Abroller segue Aktion wird aufgerufen (zB durch die Wirkung Ihrer Save Taste) in der NewTransactionViewController (Steuer ziehen Sie von der Schaltfläche ‚Speichern‘, um die ‚exit‘ des View-Controller-Symbol im Interface Builder und Wählen Sie die Aktion aus dem erscheinenden Popup).

Dann in Ihrem Abroller segue, haben Sie Zugriff auf die NewTransactionViewController haben, die den Abwickler seque über die UIStoryboardSegue'ssource Eigenschaft (a UIViewController) angefordert hat. Sobald Sie diese NewTransactionViewController haben, können Sie auf alle seine Eigenschaften zugreifen (Cast UIViewController zu NewTransactionViewController zuerst, um es einfacher zu machen).

Verwenden Sie diese Eigenschaften, um sie zu Ihrer Sammlung hinzuzufügen, und aktualisieren Sie dann Ihre Ansicht mit der aktualisierten Sammlung.

+0

Danke für die Hilfe! – naomijp

Verwandte Themen