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】:问题是您的BlueView
和PurpleView
是GreenView
的子视图。由于它们是子视图,当您隐藏 GreenView
时,它们也会被隐藏。所以让所有三个视图兄弟(在同一级别)
现在您的视图层次结构在下面
- View
- GreenView
- BlueView
- PurpleView
改成
- View
- GreenView
- BlueView
- PurpleView
【讨论】:
以上是关于UISegmentedControl和View切换问题的主要内容,如果未能解决你的问题,请参考以下文章
UITableView UITableViewController Detail View 和 UISegmentedControl 怎么样?
使用 UISegmentedControl 切换 NSFetchedResultsController
iOS开发之分段控制器(UISegmentedControl)