I。我使用for循环在ViewController中创建了一些表视图
for index in 0...array.count - 1 {
if let table = Bundle.main.loadNibNamed("Table", owner: self, options: nil)?.first as? Table {
table.frame.origin.y = 200 * CGFloat(index) + 100
table.dataSource = self
table.delegate = self
table.register(UINib.init(nibName: "Cell", bundle: nil), forCellReuseIdentifier: "Cell")
table.isScrollEnabled = false
self.view.addSubview(table)
}
}
II。现在,我想分别为每个表指定行数。显然是这样完成的:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// Return the number of items in the sample data structure.
var count:Int?
if tableView == self.tableView {
count = sampleData.count
}
if tableView == self.tableView1 {
count = sampleData1.count
}
return count!
}
该示例使用self.tableView和self.tableView1引用了两个不同的表视图。如何引用在for循环中创建的特定表视图?它们都被创建为“表”,而我没有将它们存储在唯一变量下。
答案 0 :(得分:1)
我建议创建一个属性来保存您的Table
实例:
var tables: [Table]?
然后您的例程可以填充此数组:
tables = (0..<array.count).compactMap { index -> Table? in
guard let table = Bundle.main.loadNibNamed("Table", owner: self)?.first as? Table else {
return nil
}
table.frame.origin.y = 200 * CGFloat(index) + 100
table.dataSource = self
table.delegate = self
table.register(UINib(nibName: "Cell", bundle: nil), forCellReuseIdentifier: "Cell")
table.isScrollEnabled = false
return table
}
tables?.forEach { view.addSubview($0) }
然后,您可以在各种数据源方法中使用tables
的数组。