Tableview在cellforrowatindexpath委托方法中创建多次

时间:2017-12-08 12:30:57

标签: ios iphone swift xcode uitableview

我的屏幕上有两个tableviews。 1是维护视图,2是第1个tableviewcell里面我正在显示第2个tableview。因此,我可以在显示每个tableview的日期时进行区分。

但是,问题是,一旦我按下第二个tableview单元格数据,我正在重新加载第一个tableview单元格的特定单元格,在那个单元格内我创建了第二个tableview,所以,每当我按下第二个tableview单元格时,第二个tableview就会重复创建并添加到第一个tableviewcell。

因此,代码遵循cellforrowatindexpath委托方法

//第一个tableview委托方法,每当点击第二个tableview单元格数据时多次重新加载此索引路径

else if indexPath.row == 1 {
//some action doing code

//later 2nd tableview creation
            //for no of event days like day1, day2 etc
                noOfEventDaysTableView = UITableView(frame: CGRect(x:(cell?.secondCircleGraph.frame.maxX)! + 5,y:10,width:60,height:50), style: .plain)
                cell?.contentView.addSubview(noOfEventDaysTableView)
                noOfEventDaysTableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
                noOfEventDaysTableView.delegate = self
                noOfEventDaysTableView.dataSource = self
                noOfEventDaysTableView.backgroundColor = UIColor.clear
                noOfEventDaysTableView.separatorColor = UIColor.clear
                noOfEventDaysTableView.rowHeight = 20.0

}

在滚动第二个tableview数据时,它就像再次创建单元格一样。 PFA。

enter image description here

如何避免一旦创建第二个tableview,第二个限制再次创建?

我可以通过以下方式避免

         noOfEventDaysTableView.removeFromSuperview()

有没有更好的解决方案呢? 有什么建议。谢谢!

2 个答案:

答案 0 :(得分:1)

如果要将tableview添加为" addSubview(noOfEventDaysTableView)" in" cellForRowAt indexPath" 。那么请在tableview单元格方法awakeFromNib()中添加它们。

override func awakeFromNib() {
    super.awakeFromNib()
    noOfEventDaysTableView = UITableView(frame: CGRect(x:(cell?.secondCircleGraph.frame.maxX)! + 5,y:10,width:60,height:50), style: .plain)
    cell?.contentView.addSubview(noOfEventDaysTableView)
    // Initialization code
}

为了比较,表视图设置tableView

的标记值
tableView.tag = 999

答案 1 :(得分:0)

出现此问题是因为出列所以,在添加之前枚举主tableView单元格的 contentView 以检查是否存在任何 UITableView 子视图如果不存在则添加它。 。