PickerView가 있는 Alert 창 만들기
27 May 2021 | iOS개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
PickerView가 있는 Alert 창 만들기
해당 블로그를 참고하여 만들어보았습니다. > 참고한 블로그
UIAlertController
addAction에 tableView.reloadData()가 들어가는 이유는 해당 버튼이 tableview cell에 들어가있기 때문이다.
- 버튼을 누르면 개월수를 체크하는 pickerView가 뜬다.
- 원하는 개월수를 선택 후 확인 버튼을 누르면 label에 내가 선택한 개월수가 나온다.
class ViewController: UIViewController {
let pickerList = ["2개월", "3개월", "4개월", "5개월", "6개월", "7개월", "8개월", "9개월", "10개월", "11개월", "12개월"]
var pickerView = UIPickerView()
var typeValue = String()
@IBAction func touchDateSelectBtn(_ sender: UIButton) {
let alert = UIAlertController(title: "예상 프로젝트 기간", message: "\n\n\n\n\n\n", preferredStyle: .alert)
alert.isModalInPopover = true
let pickerFrame = UIPickerView(frame: CGRect(x: 5, y: 20, width: 250, height: 140))
alert.view.addSubview(pickerFrame)
pickerFrame.delegate = self
pickerFrame.dataSource = self
alert.addAction(UIAlertAction(title: "취소", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "확인", style: .default, handler: { (UIAlertAction) in
print("\(self.typeValue)")
self.tableView.reloadData()
}))
self.present(alert, animated: true, completion: nil)
}
UIPickerViewDelegate, UIPickerViewDataSource
extension ViewController: UIPickerViewDelegate, UIPickerViewDataSource {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return self.pickerList.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return pickerList[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
if row == 0 {
typeValue = "2개월"
} else if row == 1 {
typeValue = "3개월"
} else if row == 2 {
typeValue = "4개월"
} else if row == 3 {
typeValue = "5개월"
} else if row == 4 {
typeValue = "6개월"
} else if row == 5 {
typeValue = "7개월"
} else if row == 6 {
typeValue = "8개월"
} else if row == 7 {
typeValue = "9개월"
} else if row == 8 {
typeValue = "10개월"
} else if row == 9 {
typeValue = "11개월"
} else if row == 10 {
typeValue = "12개월"
}
}
}
UITableView
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DateSelect") as! DateSelectTableViewCell
cell.pickerLbl.text = self.typeValue
return cell