在按“完成”時,我在從選擇器中獲取所選結果以顯示在我的描述中時遇到問題。運行應用程式時,描述將列印 ["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) {
}
uj5u.com熱心網友回復:
您可以pickerView(_:didSelectRow:inComponent)在用戶更改選擇時收聽并記錄行值,也可以selectedRow(inComponent:)在用戶點擊完成按鈕時向選擇器詢問其所選行(使用方法)。
您的Description.text = "You are \(gender)."代碼沒有意義,因為它gender似乎是一組性別值。我希望它能夠讀取Description.text = "You are \(gender[selectedRow])."(假設您將所選行保存到實體 var selectedRow。
請注意,實體變數應以小寫字母開頭,型別應以大寫字母開頭。Description應該是這樣description。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349204.html
