【发布时间】:2021-12-19 03:36:00
【问题描述】:
我在按“完成”时从选择器中获取所选结果以显示在我的描述中时遇到问题。运行应用程序时,描述将打印 ["Male", "Female"]。最终结果应该只将所选选项插入描述中。
我是 swift 新手,不确定自己做错了什么才能得到这个结果。对此的任何帮助将不胜感激。代码如下:
类 OnboardingViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var collectionView: UICollectionView!
@IBOutlet weak var pageControl: UIPageControl!
@IBOutlet weak var NextButton: UIButton!
@IBOutlet weak var Description: UILabel!
let gender = ["Male", "Female"]
var genderPicker = UIPickerView()
var toolBar = UIToolbar()
var slides: [OnboardingSlide] = []
override func viewDidLoad() {
super.viewDidLoad()
NextButton.layer.cornerRadius = NextButton.frame.width / 2
NextButton.layer.masksToBounds = true
NextButton.alpha = 0
Description.text = "An ideal daily intake of calories varies depending on age, metabolism and levels of physical activity, among other things. Generally, the recommended daily calorie intake is 2,000 calories a day for women and 2,500 for men."
Description.numberOfLines = 0
Description.lineBreakMode = .byTruncatingTail
view.addSubview(Description)
}
@IBAction func genderSelectButton(_ sender: UIButton) {
genderPicker = UIPickerView.init()
genderPicker.delegate = self
genderPicker.dataSource = self
genderPicker.backgroundColor = UIColor.white
genderPicker.setValue(UIColor.black, forKey: "textColor")
genderPicker.autoresizingMask = .flexibleWidth
genderPicker.contentMode = .center
genderPicker.frame = CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 300)
self.view.addSubview(genderPicker)
toolBar = UIToolbar.init(frame: CGRect.init(x: 0.0, y: UIScreen.main.bounds.size.height - 300, width: UIScreen.main.bounds.size.width, height: 50))
toolBar.items = [UIBarButtonItem.init(title: "Done", style: .done, target: self, action: #selector(onDoneButtonTapped))]
self.view.addSubview(toolBar)
Description.alpha = 0
}
@objc func onDoneButtonTapped() {
toolBar.removeFromSuperview()
genderPicker.removeFromSuperview()
Description.text = "You are \(gender)."
Description.alpha = 100
NextButton.alpha = 100
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return gender.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return gender[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
Description.text = gender[row]
print(gender[row])
}
@IBAction func nextButtonClicked(_ sender: Any) {
}
【问题讨论】:
标签: swift uipickerview