이런식으로 입력 창을 두개 만들고 싶었다. 나이 눌러도 위 화면처럼 뜨고, 키 선택해도 위 화면처럼 뜨도록 ㅎㅎ...
근데 코드를 작성해보니 안되더라, 바로 밑에는 성공, 그 밑에는 실패다.
import UIKit
class LoginViewController: UIViewController {
@IBOutlet weak var ageTextField: UITextField!
@IBOutlet weak var heightTextField: UITextField!
var list1 = ["1", "2"]
var list2 = ["a", "b"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
createPickerView()
dismissPickerView()
}
func createPickerView() {
let pickerView2 = UIPickerView()
pickerView2.delegate = self
heightTextField.inputView = pickerView2
let pickerView1 = UIPickerView()
pickerView1.delegate = self
ageTextField.inputView = pickerView1
}
func dismissPickerView() {
let toolBar1 = UIToolbar()
toolBar1.sizeToFit()
let button1 = UIBarButtonItem(title: "선택", style: .plain, target: self, action: #selector(buttonPressed))
toolBar1.setItems([button1], animated: true)
toolBar1.isUserInteractionEnabled = true
ageTextField.inputAccessoryView = toolBar1
heightTextField.inputAccessoryView = toolBar1
}
@objc private func buttonPressed(_ sender: Any) {
self.view.endEditing(true)
}
}
성공한코드
import UIKit
class LoginViewController: UIViewController {
@IBOutlet weak var ageTextField: UITextField!
@IBOutlet weak var heightTextField: UITextField!
var list1 = ["1", "2"]
var list2 = ["a", "b"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
createPickerView()
dismissPickerView()
}
func createPickerView() {
let pickerView1 = UIPickerView()
pickerView1.delegate = self
ageTextField.inputView = pickerView1
let pickerView2 = UIPickerView()
pickerView2.delegate = self
heightTextField.inputView = pickerView2
}
func dismissPickerView() {
let toolBar1 = UIToolbar()
toolBar1.sizeToFit()
let button1 = UIBarButtonItem(title: "선택", style: .plain, target: self, action: #selector(buttonPressed))
toolBar1.setItems([button1], animated: true)
toolBar1.isUserInteractionEnabled = true
ageTextField.inputAccessoryView = toolBar1
let toolBar2 = UIToolbar()
toolBar2.sizeToFit()
let button2 = UIBarButtonItem(title: "선택", style: .plain, target: self, action: #selector(buttonPressed))
toolBar2.setItems([button2], animated: true)
toolBar2.isUserInteractionEnabled = true
ageTextField.inputAccessoryView = toolBar2
}
@objc private func buttonPressed(_ sender: Any) {
self.view.endEditing(true)
}
}
실패한코드
아래와 위의 코드의 차이는, toolBar2를 새로 할당 했느냐 안했느냐 인데, 이게 참 밑에는 그래도 별개의 UIToolBar로 될거 같은데 안된다. 실행해 보면 키 부분은 툴바 "선택" 부분이 없음.
아래 코드로 실행한 결과임. 왜그러지?
'ios개발' 카테고리의 다른 글
<ios개발> Scaling Fonts Automatically (0) | 2021.01.16 |
---|---|
<watchOS 개발> watchOS에서 watchConnectivity 안될때 (0) | 2021.01.16 |
<ios개발> Swift언어: keyPath, 키패스, \ (0) | 2020.12.09 |
<HealthKit> HealthKit을 공부해 보자 (0) | 2020.08.30 |
<ios개발> 프레임워크, 라이브러리, sdk 구분. (0) | 2020.04.28 |