핸드폰과 엑스코드 버전이 맞지않아 업데이트를 했다😭😭😭😭업데이트하기 싫었는데ㅠㅠ
엑스코드를 업데이트하고보니 DatePicker의 기본값이 바뀌어 버렸다!!!😳
캘린더도 나오고 상당히 익숙하지 않아 몹.시. 당황😩
보기 이쁘고 내가 편하려고,, 팝업뷰를 공부했다!!
팝업뷰를 만들면서 점점 엑스코드12에 익숙해져 가다보니,,,
Date Picker의 Style을 Automatic이 아니라 Wheels로 바꾸면 된다는 것을 깨달았다,,,ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
하지만,,이를 통해 팝업뷰를 배울 수 있었다😊앱이 조금씩 봐줄만 하다,,,는 내생각?!!😌
https://lin-ing-link.tistory.com/41
1. DatePicker
팝업모달로 Date Picker창을 띄워줬다🧐
확인 버튼을 눌렀을 때 해당 날짜를 textField에 넣어주는 작업은 다음과 같다
@IBAction func saveDate(_ sender: Any) {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy.MM.dd"
tmpDate = formatter.string(from: datePicker.date)
NotificationCenter.default.post(name: DatePopUpViewController.setDate, object: nil)
dismiss(animated: false)
}
확인버튼을 누르면 날짜가 바뀌었다는 소식을 PlusVC에 알려줘야하므로 노티피케이션센터와 노티피케이션으로 신호를 주었다❗️
PlusVC의 viewDidLoad에서 해당 신호를 받으면 textField에 날짜를 넣어준다
token = NotificationCenter.default.addObserver(forName: DatePopUpViewController.setDate, object: nil, queue: OperationQueue.main){ [weak self] (noti) in
self?.inputDate.text = tmpDate
}
2. This Year에서 더하기/수정하기 alert삭제 팝업모달추가
팝업모달을 공부하다보니 떠오른,,(밋밋한)나의 alert창🧐
alert는 커스텀할줄 모르기에,,,보기좋게(내기준) 팝업모달로 수정했다
우선 뷰는 다음과 같이 구성했다
하.지.만
나는 버킷리스틀 추가하고, 수정할때 둘다 이 화면이 필요하다😭❗️❗️❗️
몇번의 시도 끝에 재활용 성공 예~~~
셀과 더하자 버튼 둘다 세그로 연결했다
셀과 연결한 segue의 id는 edit
더하자버튼과 연결한 segue의 id는 plus
PlusTYBVC는 버킷리스트를 수정하고 추가하는 VC이다
PlusTYBVC에서는 자신이 어떤 경로로 넘어온지 알아야한다❗️
👉수정하는 경우, textField에는 선택한 셀의 버킷리스트 값이 입력되어 있어야하기 때문
수정인지 아닌지 구별하는 변수 edit을 선언하고 -1로 초기화 해주었다.
FirstVC에서는 셀을 선택했을 때, 해당 셀의 indexPath.row를 넘겨주어야한다.
editCellNum변수를 선언하였고, 셀을 선택할때 editCellNum에 indexPath.row를 대입해주었다.
이때, performSegue로 edit 세그를 작동시킨다
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
editCellNum = indexPath.row
performSegue(withIdentifier: "edit", sender: indexPath.row)
}
모든 세그웨이가 실행되기 전에 iOS는 prepare(for:sender:)메소들 먼저 호출한다❗️
이 때 우리는 PlusTYBVC의 edit에 indexPath.row를 넘겨줄 것이다
var editCellNum = 0
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "edit"{
if let plusVC = segue.destination as? PlusTYBViewController{
plusVC.edit = editCellNum
}
}
}
PlusTYBVC에서 변수 edit의 값이 -1이 아니면 FirstVC로부터 셀의 indexPath.row를 전달 받았다는 뜻이다.
즉, 버킷리스트를 수정한다는 뜻이므로 텍스트필드에 해당 버킷리스트를 넣어주어야한다
override func viewDidLoad() {
super.viewDidLoad()
if edit != -1{
textField.text = TYBucket.dummyTYB[edit].content
}
// Do any additional setup after loading the view.
}
확인버튼을 누르는 경우도 변수 edit의 값에 따라 나누어 주었다
@IBAction func done(_ sender: Any) {
if edit != -1 {
if let bucket = textField.text{
TYBucket.dummyTYB[edit].content = bucket
print(TYBucket.dummyTYB)
}else{
print("fault")
}
}else{
if let bucket = textField?.text{
let newBucket=TYBucket(content: bucket,iDidIt: false
)
TYBucket.dummyTYB.insert(newBucket, at: 0)
print(TYBucket.dummyTYB)
}else{
print("fault")
}
}
NotificationCenter.default.post(name: PlusTYBViewController.newBucketInsert, object: nil)
dismiss(animated: false)
}
확인버튼을 누르면 버킷리스트가 바뀌었다는 소식을 FirstVC에 알려줘야하므로
노티피케이션센터와 노티피케이션을 이용했다❗️
'기록 > 공부기록👩🏻💻' 카테고리의 다른 글
[공부기록]100일_18일차 (0) | 2020.09.24 |
---|---|
[공부기록]100일_17일차 (0) | 2020.09.23 |
[공부기록]100일_15일차 (0) | 2020.09.21 |
[공부기록]100일_14일차 (0) | 2020.09.20 |
[공부기록]100일_13일차 (0) | 2020.09.19 |