willDisplay单元格中的函数也在视图加载时调用

时间:2019-05-01 08:23:39

标签: ios swift uitableview

override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {

        if userType == "2" {
        if (indexPath.section == (page * 10) - 2) && (page > 0) && (pagedone == false){
           self.setupInbox(self.appDele!.glat, slng: self.appDele!.glong, animate: false)
            if (page >= 1 ) {
                page = page + 1
            }
        }
        } else if userType == "1" {
            if indexPath.section == 10 {
            showAlert()
            }
        }
    }



override func numberOfSections(in tableView: UITableView) -> Int {
        return arrayOfRels.count
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        guard let release = arrayOfRels[exist: indexPath.section] else { return 0 }

        if release.isAttendingNow == "1" {
            return 120.0
        }

        return 90.0

    }
 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 5
    }

    // Make the background color show through
    override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let headerView = UIView()
        headerView.backgroundColor = UIColor.clear
        return headerView
    }
加载视图时也会调用

showAlert()函数。

仅应在indexPath.section == 10时调用

我如何使其工作?

2 个答案:

答案 0 :(得分:0)

如果您的屏幕足够大,可以在viewDidLoad之后立即显示第10条,那么假设您的showAlter()viewDidLoaduserType将在1之后立即被调用

答案 1 :(得分:0)

Apple Documentation

  

表视图在使用前将消息发送给它的委托   单元格绘制一行,从而允许代表自定义   单元格对象在显示之前。此方法为委托提供了一个   有机会覆盖表先前设置的基于状态的属性   视图,例如选择和背景颜色。在代表之后   返回时,表格视图仅设置alpha和frame属性,并且   然后仅当行滑入或滑出时对它们进行动画处理。

尽管描述不多,但似乎并非出于您要使用的目的,因为它可能会在通过索引之前加载更多的单元格,直到它们出现之前。

此方法假设在显示之前设置颜色状态,隐藏单元格显示。

您可以通过检查当前索引和索引之间的差异来使用cellforrow

//Next Index about to show -- you can remove +1 if you want on same point and increase if you want it prior.

let index = indexPath.section + 1

if index == 10 { showAlert() }