Проблема с переключением UISegmentedControl и View

#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