2017-12-25 8 views
0

버튼을 사용하여 내 선택보기에서 데이터를 선택하고 싶습니다. 현재 내 코드는 단추를 사용하여 선택기보기를 닫지 만 단추는 선택기보기에서 아무 것도 선택하지 않습니다. 무언가가 선택되는 유일한 방법은 선택기보기를 사용하는 스크롤 일 경우입니다. 피커 뷰의 데이터를 제출하는 유일한 방법으로 내 버튼을 사용하려면 어떻게해야합니까?버튼을 사용하여 pickerview에서 데이터를 선택하는 방법 (swift4)

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    picker.delegate = self 
    picker.dataSource = self 
    for textFieldObject in theScoreRound 
    { 
     textFieldObject.inputView = picker 

     let toolbar = UIToolbar(frame: CGRect(x: 0, y: UIApplication.shared.statusBarFrame.height, width: view.bounds.width, height: 44)) 

     var items = [UIBarButtonItem]() 

     items.append(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)) 
     items.append(UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(self.doneAction))) 
     items.append(UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: self, action: nil)) 

     toolbar.items = items 


     let fs = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.flexibleSpace, target: nil, action: nil) 
     let db = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: self, action: #selector(self.doneAction)) 
     toolbar.setItems([fs,db],animated: false) 
     textFieldObject.inputAccessoryView = toolbar 



    }} 
    @objc func doneAction(){ 

    view.endEditing(true) 

} 
public func numberOfComponents(in pickerView: UIPickerView) -> Int { 
    return 1 
} 
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { 
    return numberX.count 
} 

func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { 
    return numberX[row] 
} 

public func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { 
    for textField in theScoreRound { 
     if textField.isEditing { 
      textField.text = numberX[row] 

     } 
    } 

    self.view.endEditing(false) 
} 

@IBAction func enterScore(_ sender: Any) { 
    var total = 0 
    for view in theScoreRound { 
     if let text = view.text, let num = Int(text) { 
      total += num 

     } 
    } 
    fighterAScore.text = String(total) 

} 
+0

'self.pickerView.selectedRow (inComponent : <#T##Int#>)'메소드를 사용하여 컴포넌트에서 선택된 행을 얻고 UIPick을 사용해야한다. erDataSource 당신은 어떤 함수에 값을 –

+0

넣을 수 있습니까? –

+0

UIButton 액션에서는 원하는 경우 몇 가지 예를 제공 할 수 있습니다. –

답변

0

당신 때문에 당신의 UIPickerDataSource 당신이 numberOfComponents 방법

예제 코드

@IBAction func pickerDataAction(_ sender: Any) { 
    let selectedRow = self.pickerView.selectedRow(inComponent: 0) 
    let desiredValue = numberX[selectedRow] 
} 
1을 반환하는 당신이 경우 0에서 구성 요소 번호를 통과 UIPickerView selectedRow(inComponent: <#T##Int#>) 방법을 사용할 필요가
+0

답변 해 주셔서 감사합니다. 피커보기의 내 점수를 선택하는 데 사용하는 내 버튼을 추가했습니다. 귀하의 코드를 추가했지만 작동하지 않습니다. 혼동을 없애려면 콘센트 컬렉션을 사용하고 있습니다. 도와 줘서 고마워. –

+0

지금 가지고있는 코드로 코드를 업데이트 할 수 있습니까? @ SamBurns –

+0

현재 코드의 맨 끝에 버튼을 추가했습니다. 내 질문을 편집했습니다. 감사. –

관련 문제