기록/공부기록👩🏻‍💻

[공부기록]100일차_16일

lingk 2020. 9. 22. 20:17

 

 

핸드폰과 엑스코드 버전이 맞지않아 업데이트를 했다😭😭😭😭업데이트하기 싫었는데ㅠㅠ

엑스코드를 업데이트하고보니 DatePicker의 기본값이 바뀌어 버렸다!!!😳

캘린더도 나오고 상당히 익숙하지 않아 몹.시. 당황😩

보기 이쁘고 내가 편하려고,, 팝업뷰를 공부했다!!

팝업뷰를 만들면서 점점 엑스코드12에 익숙해져 가다보니,,,

Date Picker의 Style을 Automatic이 아니라 Wheels로 바꾸면 된다는 것을 깨달았다,,,ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

하지만,,이를 통해 팝업뷰를 배울 수 있었다😊앱이 조금씩 봐줄만 하다,,,는 내생각?!!😌

https://lin-ing-link.tistory.com/41

 

[iOS] 팝업모달 만들기

1. VC1 VC2 만들기 2. VC2에 뷰 추가 👉뷰 사이즈는 팝업창의 크기 3. VC2의 가장큰뷰(?)배경 색상 바꾸기 반반 되어 있는 색중 하나 선택!! 4. VC1과 VC2의 세그를 연결한다 - 세그의 Kind는 Present Modally..

lin-ing-link.tistory.com

 

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
        }

 

 

lin-ing-link.tistory.com/28

 

[iOS]노티피케이션센터와 노티피케이션

Notification 노티피케이션을 통해 등록된 노티피케이션에 정보를 전달하기 위한 구조체 Notification Center 등록된 옵저버에게 동시에 노티피케이션을 전달하는 클래스 NotificationCenter 클래스는 노티��

lin-ing-link.tistory.com

 

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