UISegmentedControl和View切换问题

Posted

技术标签:

【中文标题】UISegmentedControl和View切换问题【英文标题】:UISegmentedControl and View switching problem 【发布时间】:2021-11-24 11:39:51 【问题描述】:

所以我编写了一个代码,其中我在 UISegmentedControl 中有 3 个选项,它应该向您显示 3 个视图之一(绿色带有 2 个文本字段,子视图蓝色带有 2 个按钮,子视图紫色带有 2 个IUImageView)

起初一切看起来都很简单,但后来我意识到我的 VC 只有第一个视图,而忽略了 2 和 3。所以当我单击第二个和第三个分段控件时,我看到的只是一个空白屏幕。 很奇怪,但是当我更改了 1 个 seg 控件以显示蓝色视图而不是绿色时,它还显示了白屏。

我还是个初学者,所以我很难理解这里哪里出了问题( 也许有人可以帮助我。 谢谢! hierarchy in storyboard

 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
     */

【问题讨论】:

您能在故事板中显示您的视图层次结构的屏幕截图吗? @SamB 我已将其添加到代码上方的问题中 【参考方案1】:

问题是您的BlueViewPurpleViewGreenView 的子视图。由于它们是子视图,当您隐藏 GreenView 时,它们也会被隐藏。所以让所有三个视图兄弟(在同一级别)

现在您的视图层次结构在下面

- View
  - GreenView
    - BlueView 
      - PurpleView 

改成

- View
  - GreenView
  - BlueView 
  - PurpleView 

【讨论】:

以上是关于UISegmentedControl和View切换问题的主要内容,如果未能解决你的问题,请参考以下文章

UITableView UITableViewController Detail View 和 UISegmentedControl 怎么样?

利用SegmentedControl切换控制器的view

使用 UISegmentedControl 切换 NSFetchedResultsController

iOS开发之分段控制器(UISegmentedControl)

在iOS 5中使用UISegmentedControl切换视图控制器

UISegmentedControl 在视图控制器之间切换