1. 모달 presentation 바꾸기
PlusBucketVC를 Full Screen으로 띄워야 viewWillAppear을 거쳐 테이블뷰를 reload할 수 있었다.
Full Screen이 아닌 iOS 13의 기본 page sheet형태로 모달을 띄웠을 때도 테이블뷰를 reload할 수 있도록 수정하였다.
우선 PlusBucketVC에서 Notification의 식별자를 선언해주었다.
extension PlusBucketViewController{
static let newBucketInsert=Notification.Name(rawValue: "newBucketInsert")
}
save함수에서 post로 노티피케이션센터에 발송!
NotificationCenter.default.post(name: PlusBucketViewController.newBucketInsert, object: nil)
FirstVC의 토큰을 선언하고, 소멸자도 정의!
var token : NSObjectProtocol? = nil
deinit{
if let token = token{
NotificationCenter.default.removeObserver(token)
}
}
viewDidLoad에서 addObserver로 수신하고, 메인스레드에서 진행될 수 있도록 OperationQueue의 main에 태웠다!!!!
token = NotificationCenter.default.addObserver(forName: PlusBucketViewController.newBucketInsert, object: nil, queue: OperationQueue.main){ [weak self] (noti) in
self?.tableView.reloadData()
}
2. 팝업 모달로 바꾸기
이전처럼 뷰컨트롤러를 사용하여 전체화면을 쓰는 것이 아니라
Alert로 바꿔볼 것이다!
FirstVC안에서 버튼을 연결하여 action 메소드로 alert을 생성해 주었다.
@IBAction func plusModal(_ sender: Any) {
//alert생성
let alert = UIAlertController(title: "올해의 버킷리스트", message: "Message", preferredStyle: .alert)
//textField생성
alert.addTextField{(textField) in
textField.placeholder = "Input"
textField.textAlignment = .center
}
//ok버튼을 눌렀을때 액션
let okAction = UIAlertAction(title: "Ok", style: .default, handler:{
(okAction) in
if let bucket = alert.textFields?[0].text{
let newBucket=TYBucket(content: bucket,iDidIt:false )
TYBucket.dummyTYB.insert(newBucket, at: 0)
print(TYBucket.dummyTYB)
}else{
print("fault")
}
//notification 라디오 주파수 맞추는 느낌????
NotificationCenter.default.post(name: PlusBucketViewController.newBucketInsert, object: nil)
})
alert.addAction(okAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alert.addAction(cancelAction)
self.present(alert, animated: true, completion: nil)
}
위에서 노티피케이션을 통해 데이터를 전달하고 테이블뷰 reloadData과정을 수정했었기 때문에
헤매지않고 바꿀 수 있었다!!!!! 뿌--듯.
반응형
'기록 > 공부기록👩🏻💻' 카테고리의 다른 글
[공부기록]100일_8일차 (0) | 2020.09.14 |
---|---|
[공부기록]100일_7일차 (0) | 2020.09.13 |
[공부기록]100일_5일차 (0) | 2020.09.11 |
[공부기록]100일_4일차 (0) | 2020.09.10 |
[공부기록]100일_3일차 (0) | 2020.09.09 |