cell.selectionStyle = .none перестал работать - PullRequest
0 голосов
/ 03 марта 2020

пытается сделать ячейку недоступной для выбора, если часы = 0. она работала до того, как я добавил подготовку для перехода к данным pu sh в следующую сцену. альфа и фоновый цвет все еще работают, но cell.selectionStyle = .none сейчас нет. не могу понять, почему


 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


    let cell = UITableViewCell()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "E-MM-dd-yyyy"

    let newDate = dateFormatter.string(from: twoDWeeksArray[indexPath.section][indexPath.row])
    getWeeklyHours(newDate: newDate)
    let cellLabel = "Week of " + (newDate) + "                        " + String(hours) + " Hrs"

    if hours == 0 {

        cell.backgroundColor = .lightGray
        cell.textLabel?.alpha = 0.50
        cell.selectionStyle = .none

    }

    cell.textLabel?.text = cellLabel


    hours = 0.00
    return cell
 }

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Просто используйте cell.isUserInteractionEnabled = false в swift, практически любое представление может включать или отключать свое взаимодействие. Ячейка - это не что иное, как другое представление контента, поэтому ее можно отключить.

0 голосов
/ 03 марта 2020

Свойство selectionStyle ничего не делает для предотвращения выбора ячейки. Он описывает, как должна выглядеть ячейка при ее выделении. Значение .none говорит о том, что ячейка не должна выглядеть иначе, чем когда она не выбрана. Тем не менее, пользователь все еще может выбрать ячейку.

Если вы не хотите, чтобы ячейка была выбрана, то реализуйте метод делегата UITableViewDelegate.tableView(_:willSelectRowAt:) и возвращайте nil для строк, которые не должны выбираться.

Отключение взаимодействия с пользователем также может решить эту проблему для вас, но я не рекомендую этого, поскольку это не идиоматический c iOS и может иметь неожиданные побочные эффекты.

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