У меня есть TabBar с одним видом типа UIViewController. В этом представлении я добавил два контейнера (один для предстоящих поставок и один для завершенных поставок). Каждый из этих двух контейнеров связан с UITableViewController для отображения таблиц соответствующих заказов. Для доступа к контейнерам у меня есть сегментированный элемент управления.Swift - Передача данных из контейнера в TableViewController с использованием Segue
Я до сих пор не могу со всеми попытками, основанными на коде, и подходит для передачи данных с viewcontroller в tableviewcontrller. Я что-то упускаю?
Вот код, у меня есть в контроллере представления:
@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
}
}
Я тогда следующее в UpcomingDeliveriesTableViewController:
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
}
}
оператор печати в UpcomingDeliveriesTableVieController печати 0 в качестве счетчика массива Предметы. До сих пор не передается.
Это, наконец, раскадровка снимок:
Спасибо
Проверить, если вы в ordersObjectsArrray Повторная инициализация UpcomingDeliveriesTableVieController ?? –
Я делаю это: var ordersObjectsArrray = [OrderObject]() @VishalSonawane –
@VishalSonawane извините, не получилось, что –