UITableViewCell скрывает элементы пользовательского интерфейса в фоновом режиме

#ios #swift #uitableview #swift3 #uiswitch

#iOS #swift #UITableView #swift3 #uiswitch

Вопрос:

Я создал пользовательскую ячейку UITableView, и, похоже, все работает, за одним исключением. У меня есть пользовательский переключатель, который находится внутри ячейки (подключен к собственному классу UITableViewCell, который загружает TableView), но он появляется только при нажатии на ячейку или при прозрачном / прозрачном фоне ячеек. В идеале у меня должен быть белый фон для ячейки и переключатель поверх фона.

Я пробовал некоторые хакерские вещи, такие как:

 cell.bringSubview(toFront: cell.switch)
  

и

 cell.switch.isHidden = false
  

Но это, очевидно, не сработало.

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

Иерархия выглядит следующим образом — Просмотр таблицы> Ячейка> Просмотр содержимого> Переключатель

Вот видео, чтобы увидеть его в деталях — http://quick.as/rpyub8mv

Скриншот раскадровки Xcode

Пользовательский класс tableViewCell

 class SettingsBoolCell: UITableViewCell {

@IBAction func switchAction(_ sender: UISwitch) {
}
@IBOutlet weak var switchOutlet: UISwitch!

}
  

Реализация ViewController

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "settingsSectionOne", for: indexPath) as! SettingsBoolCell
    switch indexPath.section {
    case 0: cell.textLabel?.text = titles[0]
    case 1: cell.textLabel?.text = titles[1]
    case 2: cell.textLabel?.text = titles[2]
    default: ()
    }
    return cell
}
  

Комментарии:

1. Как вы создаете UITableViewCell . Программно или в файле .xib. Если программно вам нужно добавить его в ContentView оф UITableViewCell . ContentView это UITableViewCell подраздел, который используется для отображения содержимого вашей ячейки.

2. Файл .xib. Его иерархия выглядит следующим образом: вид таблицы> Ячейка> Вид содержимого> Пользовательский интерфейс

3. Вот видео о том, о чем я говорю — quick.as/rPyUb8mv

4. опубликуйте скриншот вашего макета табличного представления

5. Добавлен «Скриншот раскадровки Xcode» в исходном сообщении / вопросе, чтобы вы могли посмотреть и код. Спасибо!

Ответ №1:

Если вы используете раскадровку, убедитесь, что ваш пользовательский интерфейс находится внутри правильного представления и что он находится под другими компонентами в структуре вашего документа.

Если вы создаете представление внутри ячейки программно, убедитесь, что вы добавили UISwitch в нужное представление с помощью addSubview last . Вы также можете установить zPositions с view.layer.zPosition атрибутом.

Комментарии:

1. Использование раскадровки. Его иерархия выглядит следующим образом: вид таблицы> Ячейка> Вид содержимого> Пользовательский интерфейс

Ответ №2:

Итак, я устанавливал —

 cell.textLabel.text?
  

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

Спасибо всем за вашу помощь!