Ich habe eine TabBar mit einer Ansicht vom Typ UIViewController. In dieser Ansicht habe ich zwei Container hinzugefügt (einen für bevorstehende Lieferungen und einen für abgeschlossene Lieferungen). Jeder dieser beiden Container ist mit UITableViewController verbunden, um Tabellen relevanter Aufträge anzuzeigen. Um auf die Container zuzugreifen, habe ich eine segmentierte Kontrolle.Swift - Daten vom Container an TableViewController mit Segue übergeben
Ich bin bisher nicht in der Lage mit allen Versuchen basierend auf Code herum und Ansätze, Daten vom Viewcontroller an den Tableviewcontroller übergeben. Fehle ich etwas?
Hier ist der Code, den ich im View-Controller habe:
@IBOutlet weak var ordersSegementedControl: UISegmentedControl!
@IBOutlet weak var upcomingDeliveriesContainer: UIView!
override func viewDidLoad() {
super.viewDidLoad()
SwiftLoader.show(title: "Retrieving Orders...", animated: true)
let currentUser = FIRAuth.auth()?.currentUser
ref.child("ordersSummary").queryOrderedByChild("userId").queryEqualToValue("\(currentUser!.uid)").queryLimitedToLast(15).observeEventType(.ChildAdded, withBlock: { (snapshot) in
if(snapshot.value!["orderStatus"] as? String != "In Progress" || snapshot.value!["orderStatus"] as? String != "Pending")
{
let tempOrderObject = OrderObject()
//let properDate: UnixTime = snapshot.value!["dueDate"] as! Int
tempOrderObject.dueDateInt = snapshot.value!["dueDate"] as? Int
let properDate: UnixTime = snapshot.value!["dueDate"] as! Int
tempOrderObject.dueDate = properDate.toDay
tempOrderObject.referenceNumber = snapshot.value!["orderReference"] as? String
tempOrderObject.status = snapshot.value!["orderStatus"] as? String
tempOrderObject.userId = snapshot.value!["userId"] as? String
tempOrderObject.sender = snapshot.value!["sender"] as? String
self.ordersObjectsArrray.append(tempOrderObject)
self.ordersObjectsArrray.sortInPlace({ $0.dueDate > $1.dueDate })
SwiftLoader.hide()
}
}){ (error) in
SwiftLoader.hide()
print(error.localizedDescription)
}
}
@IBAction func showComponent(sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
UIView.animateWithDuration(0.5, animations: {
self.upcomingDeliveriesContainer.alpha = 1
})
} else {
UIView.animateWithDuration(0.5, animations: {
self.upcomingDeliveriesContainer.alpha = 1
})
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if(segue.identifier == "upcomingDeliveriesSegue")
{
let destinationVC = segue.destinationViewController as! UpcomingDeliveriesTableViewController
destinationVC.ordersObjectsArrray = self.ordersObjectsArrray
}
}
ich im UpcomingDeliveriesTableViewController folgenden dann habe:
class UpcomingDeliveriesTableViewController : UITableViewController {
let ref = FIRDatabase.database().reference()
var ordersObjectsArrray:[OrderObject]?
let orderToPass = OrderObject()
override func viewDidLoad() {
super.viewDidLoad()
print("Array Count: \(self.ordersObjectsArrray!.count)")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return ordersObjectsArrray!.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
// Configure the cell...
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UpcomingDeliveriesTableViewCell
let orderEntry = self.ordersObjectsArrray![indexPath.row]
cell.dueDateLabel.text = String(orderEntry.dueDate)
cell.orderNoLabel.text = orderEntry.referenceNumber
cell.statusLabel.text = orderEntry.status
cell.senderLabel.text = orderEntry.sender
return cell
}
}
die print-Anweisung in dem UpcomingDeliveriesTableVieController Druck 0 als Anzahl der Array Artikel. Bis jetzt wird nicht weitergegeben.
Dies ist schließlich der Storyboard-Snapshot:
Danke
Überprüfen Sie, ob Sie ordersObjectsArrray in UpcomingDeliveriesTableVieController sind Neuinitialisierung ?? –
Ich mache das: var ordersObjectsArrray = [OrderObject]() @VishalSonawane –
@VishalSonawane Sorry hat nicht bekommen, dass –