Swift开发:UIPickerView选中数据无法正确传递给UILabel展示
问题根因
你在onDoneButtonTapped方法中直接将gender数组整体插值到了文本中,gender本身是存储所有选项的数组,所以渲染后会输出完整的["Male", "Female"]内容,而非你想要的选中项。
修复方案
修改onDoneButtonTapped方法内的文本赋值逻辑,通过UIPickerView的selectedRow(inComponent:)方法获取当前选中的行索引,再从gender数组中取出对应项即可:
@objc func onDoneButtonTapped() { toolBar.removeFromSuperview() genderPicker.removeFromSuperview() // 获取第一组分页的选中行索引,取出对应性别文本 let selectedGender = gender[genderPicker.selectedRow(inComponent: 0)] Description.text = "You are \(selectedGender)." Description.alpha = 1 NextButton.alpha = 1 }
额外优化提示
- 你当前在
pickerView(_:didSelectRow:inComponent:)代理方法中已经实时给Description赋值了,但因为在选择性别时你把Description的alpha设为了0,所以用户看不到实时变化;如果不需要实时预览选中结果,这个代理方法里的赋值逻辑可以删掉。 - UIView的alpha取值范围是0~1,你之前写的100会被系统自动转为1,建议直接写1更规范。
内容的提问来源于stack exchange,提问作者ksho
相关产品推荐
相关产品推荐

