UITableViewDataSource的问题 - xCode Swift

时间:2018-01-27 04:56:38

标签: ios xcode uitableview swift4

我遇到了UITableViewDataSource的问题。我将在下面分享我的代码:

我首先创建UITableViewDataSource:

//Create Vars
let cellId = "cellId1"
var selectedItems: [String?] = []

//Create Lazy Vars
lazy var ItemVC = ItemsViewController()

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! MyCell

    print(selectedItems)

    return cell
}

然后,我在另一个ViewController中设置selectedItems:

var selectedItems: [String?] = []

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    selectedItems = lists[indexPath.row].items
    ItemsDS.selectedItems = selectedItems
    ItemsVC.navigationItem.title = lists[indexPath.row].name
    navigationController?.pushViewController(ItemsVC, animated: true)
}

这是我在上面的代码中引用的列表数组。顺便说一下,上面的代码是一个UITableViewController,它显示了lists.name,我想要它做的是当按下它时它转到另一个UIViewController(来自上面的数据源)并显示列表的项目:

    var lists: [List] = [
    List(name: "Veggies", items: ["Fruit Loops", "Pasta"]),
    List(name: "11/17/18", items: ["Eggs", "Green Beans", "Pirate Booty", "Bread", "Milk"]),
    List(name: "Fruits", items: ["Fruit Loops", "Oranges"]),
    List(name: "Red Foods", items: ["Apples", "Tomatoes", "Watermelon", "Cherries"]),
    List(name: "Grains", items: ["Bread Crumbs", "Pasta", "Rice", "Chicken Flavored Rice"])
]

最后,我在另一个视图控制器中设置数据源:

    tableView.dataSource = ItemDS

    //Register TableView with Id: cellId
    tableView.register(MyCell.self, forCellReuseIdentifier: ItemDS.cellId)

问题是我的数据源中的selectedItems返回[]。但是,在我设置selectedItems的视图控制器中,它返回正确的东西。谢谢!

0 个答案:

没有答案