#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
Пользовательский класс 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. Проблема в том, что, по-видимому, когда вы используете пользовательскую ячейку, вы не можете получить доступ к свойствам ячейки по умолчанию без какого-либо странного поведения.
Спасибо всем за вашу помощь!