prepareForSegue在容器视图中将数据发送到tableview

时间:2016-06-05 13:17:53

标签: ios swift uitableview uicontainerview

我将数据从一个tableview列表发送到另一个tableview,用作所选单元格的详细视图。简单 -

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    let index = tableView.indexPathForSelectedRow

    if (segue.identifier == "EventDetailSegue") {
        let detailVC = segue.destinationViewController as! EventDetailTableViewController
        var event : Event
        if searchController.active && searchController.searchBar.text != "" {
        event = filteredEvents[index!.row]
        } else {
        event = events[index!.row]
        }

        detailVC.eventImage = event.image
        detailVC.eventCompany = event.company
        detailVC.eventName = event.name
        detailVC.eventLocation = event.location
        detailVC.eventPrice = event.price
        detailVC.eventPromoterImage = event.promoterImage
    }
}

因为我现在想要在详细的tableview底部有一个静态按钮栏。我需要将EventDetailTableViewController更改为UIViewController上的容器视图。所以我可以在UIViewController中简单地做我想要的。

我的问题是如何将此数据发送到容器视图中现在嵌入的EventDetailTableViewController?由于segue现在需要使用容器视图转到UIViewController,但我还需要确保将这些数据传递给容器内的TableView。

1 个答案:

答案 0 :(得分:0)

我使用的是颜色而不是数据:
EventDetailTableViewController - > ViewController3
UIViewController - > ViewController2 试试这样:

class ViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()

}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    let tableVc = ViewController3()
    tableVc.color = UIColor.redColor()
    let vc = ViewController2()
    vc.tableViewController = tableVc
    self.navigationController?.pushViewController(vc, animated: true)

}

}

class ViewController2: UIViewController {

var tableViewController:ViewController3!

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = UIColor.yellowColor()
    tableViewController.willMoveToParentViewController(self)
    addChildViewController(tableViewController)
    tableViewController.view.frame = CGRect(x: 0, y: 100, width: 100, height: 100)
    view.addSubview(tableViewController.view)
    tableViewController.didMoveToParentViewController(self)


}
}
class ViewController3: UITableViewController {

var color :UIColor!

override func viewDidLoad() {
    super.viewDidLoad()
    self.view.backgroundColor = color
}
}

希望它有所帮助: - )