我有一个包含表视图的主视图控制器,并且该表视图包含一个单元格,该单元格包含另一个表视图。我希望主视图控制器充当两个表视图的委托和数据源,但如果一个表视图单元格类中的一个如何区分两者,则如何区分两者。我尝试根据标签和名称(在其他SO答案中)进行区分,但是它们不起作用,因为表视图并非都位于同一视图控制器类中。提前致谢。
答案 0 :(得分:0)
我认为您可以检查rowAtindexPath中表视图的名称和cellin节方法的数量。 喜欢
如果tableView == tableViewOne { 返回10 } if tableView == tableViewTwo { 返回20 }
答案 1 :(得分:0)
由于您提到在另一个UITableView的单元格中有一个UITableView,因此我假定内部tableView的出口由外部tableView的单元格拥有。因此,我相信您将无法进行直接的等效性检查。
可能有不同的方法来解决此问题。
一种快速的方法是创建2个UITableView子类,并为每种tableView类型使用一个子类(例如, OuterTableView 和 InnerTableView 类;或者甚至创建1个子类将达到目的)。
示例代码:
class OuterTableView: UITableView {
}
class InnerTableView: UITableView {
}
class YourViewController: UIViewController, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if tableView is OuterTableView {
// Return the corresponding row count.
return 2
} else if tableView is InnerTableView {
// Return the corresponding row count.
return 1
} else {
return 0
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//
// You may use only one sub-class also for the identification
//
if tableView is OuterTableView {
return UITableViewCell()
} else {
return UITableViewCell()
}
}
}
注意:不要忘记在“界面”构建器中为UITableView元素分配相应的类。