функция в ячейке willDisplay также вызывается при загрузке просмотра - PullRequest
0 голосов
/ 01 мая 2019
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 голосов
/ 01 мая 2019

Документация Apple

Табличное представление отправляет это сообщение своему делегату непосредственно перед тем, как оно использует ячейку для рисования строки, что позволяет делегату настроить объект ячейки перед ним.отображается.Этот метод дает делегату возможность переопределить основанные на состоянии свойства, установленные ранее табличным представлением, такие как выделение и цвет фона.После возврата делегата табличное представление устанавливает только свойства альфа-канала и фрейма, и только при анимации строк по мере их скольжения внутрь или наружу.

Хотя описание невелико, но, похоже, оно не дляЦель, которую вы хотите использовать, так как она может загружать больше ячеек вперед, до того, как они появятся, но через индексы.

Этот метод предполагает установку состояния, такого как цвет, скрытие показа ячейки, прежде чем она будет показана для отображения.

Вы можете использовать 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() }
0 голосов
/ 01 мая 2019

Если ваш экран достаточно большой, чтобы отображать раздел 10 сразу после viewDidLoad, то showAlter() будет вызываться сразу после viewDidLoad при условии, что ваш userType равен 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...