如何区分位于2个不同类中的表视图

时间:2018-10-17 10:09:37

标签: swift uitableview

我有一个包含表视图的主视图控制器,并且该表视图包含一个单元格,该单元格包含另一个表视图。我希望主视图控制器充当两个表视图的委托和数据源,但如果一个表视图单元格类中的一个如何区分两者,则如何区分两者。我尝试根据标签和名称(在其他SO答案中)进行区分,但是它们不起作用,因为表视图并非都位于同一视图控制器类中。提前致谢。

2 个答案:

答案 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元素分配相应的类。