#swift #uiview #uisegmentedcontrol
Вопрос:
Итак, я создал код, в котором у меня есть 3 параметра в UISegmentedControl, которые должны показывать вам одно из 3 представлений ( зеленое с 2 текстовыми полями, подвидовое синее с 2 кнопками и подвидовое фиолетовое с 2 IUImageView).
Сначала все выглядело просто, но потом я понял, что мой VC только первый вид и игнорирует 2 и 3. Поэтому, когда я нажимаю второй и третий сегментированный элемент управления, все, что я вижу, — это пустой экран.
Странно, но когда я изменил 1 сегмент управления, чтобы показать мне синий вид вместо зеленого, он также показал мне экран blanc.
Я все еще новичок, поэтому мне трудно понять, в чем здесь проблема(
может быть, кто-то может мне помочь.
Спасибо!
иерархия в раскадровке
import UIKit
class ThirdViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
greenView.isHidden = false. // in this part I've tried to make the second view visible instead of first. It did not work.
blueView.isHidden = true
purpleView.isHidden = true
}
@IBOutlet weak var greenView: UIView!
@IBOutlet weak var blueView: UIView!
@IBOutlet weak var purpleView: UIView!
@IBAction func didChangeSC(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex {
case 0 :
greenView.isHidden = false
blueView.isHidden = true
purpleView.isHidden = true
case 1 :
blueView.isHidden = false
greenView.isHidden = true
purpleView.isHidden = true
case 2 :
purpleView.isHidden = false
greenView.isHidden = true
blueView.isHidden = true
default:
break
}
}
/*
// I've also tried to change the visibility but it didn't work.Here is how I did it.
case 0 :
greenView.alpha = 1
blueView.alpha = 0
purpleView.alpha = 0
case 1 :
blueView.alpha = 1
greenView.alpha = 0
purpleView.alpha = 0
case 2 :
purpleView.alpha = 1
greenView.alpha = 0
blueView.alpha = 0
*/
Комментарии:
1. Можете ли вы показать снимок экрана вашей иерархии представлений в раскадровке?
2. @SamB Я добавил это в свой вопрос прямо над кодом
Ответ №1:
Проблема в том, что вы BlueView
и PurpleView
есть суб-представления GreenView
. Поскольку они являются подвидами, когда вы их скрываете GreenView
, они также скрываются. Поэтому сделайте все три вида братьями и сестрами (на одном уровне)
Теперь ваша иерархия представлений находится ниже
- View
- GreenView
- BlueView
- PurpleView
Измените его на
- View
- GreenView
- BlueView
- PurpleView