ios условный рендеринг ячейки таблицы - PullRequest
0 голосов
/ 20 ноября 2018

В настоящее время я работаю над быстрым проектом HRM.где требуется показать табличное представление со слегка настроенной ячейкой.Ячейки, содержащие две кнопки, при некоторой бизнес-логике одна кнопка будет скрыта.например,

, если текущий пользователь сам является сотрудником, он может видеть список, ячейка, содержащая его имя, может видеть две кнопки, а другая ячейка будет отображать просто одну кнопку.я попробовал следующее: 1. если userId == employeeId (employeeId пришел из модели), то

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell =  tableView.dequeueReusableCell(withIdentifier: "ClaimTableViewCell", for: indexPath) as! ClaimTableViewCell

        if(self.claimdata[indexPath.section].employeeId  == self.empId) {

            cell.CancelButton.isHidden = false


        }

также я попытался

if(self.claimdata[indexPath.section].employeeId  != self.empId) {

                cell.CancelButton.frame.size.height = 0


            }

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

Я что-то упустил?

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Эта проблема связана с возможностью повторного использования ячейки в UITableView.

Используйте приведенный ниже код в методе cellForRowAtIndexPath .

cell.CancelButton.isHidden = true

if(self.claimdata[indexPath.section].employeeId  == self.empId) {
        cell.CancelButton.isHidden = false
 }
0 голосов
/ 20 ноября 2018

Поскольку ячейка tableView является многократно используемой ячейкой

dequeueReusableCell withIdentifier

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell =  tableView.dequeueReusableCell(withIdentifier: "ClaimTableViewCell", for: indexPath) as! ClaimTableViewCell

        if(self.claimdata[indexPath.section].employeeId  == self.empId) {

            cell.CancelButton.isHidden = false

        }else{

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