UISegmentedControl切换视图仅第一个有效其余显示空白如何解决
问题排查方案
你编写的切换逻辑本身没有语法问题,无法正常显示另外两个视图可以按照以下方向逐一排查:
- 检查IBOutlet连接有效性
打开Storyboard对应的视图控制器面板,查看blueView、purpleView的关联连线是否存在黄色/红色感叹号,若连线中断,两个属性会为nil,修改isHidden或alpha属性都不会生效。
可以在viewDidLoad中加入以下代码验证,运行后查看控制台输出是否存在nil值:print("greenView:\(greenView), blueView:\(blueView), purpleView:\(purpleView)") - 检查视图层级是否正确
确认greenView、blueView、purpleView三者都是控制器根视图的同级直接子视图,不要将后两个视图嵌套在greenView内部,否则隐藏greenView时其所有子视图也会连带被隐藏,导致看不到内容。 - 检查Auto Layout约束配置
确认三个视图都配置了完整的布局约束,且约束规则一致(例如都绑定根视图的上下左右边距),如果blueView、purpleView没有配置约束、或者约束冲突,运行时视图的frame会变为0或者偏移到屏幕外,自然无法看到。
可以在didChangeSC方法中加入打印代码,确认切换时视图的位置大小是否正常:print("blueView frame:\(blueView.frame), purpleView frame:\(purpleView.frame)") - 检查分段控件的事件绑定
确认didChangeSC方法已经正确关联到UISegmentedControl的valueChanged事件,可以在switch代码块中加入打印日志,点击分段控件时确认方法是否被正常触发。
内容的提问来源于stack exchange,提问作者Kseniia Piskun
相关产品推荐
相关产品推荐

