我遇到了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的视图控制器中,它返回正确的东西。谢谢!