28.11.21 릴리 TIL : JuiceMaker 돌아보기
🤓 학습 내용
🧭 Navigation 방식으로 화면전환만 하고 NavigationBar 커스터마이징 하기
JuiceMaker프로젝트에서 JuiceMaekrViewController에서 재고수정
을 누르면 StockManagerViewController를 모달로 뛰어주는 것이 사용자 경험을 고려했을 때 자연스럽고, Navigation Controller의 depth를 가지지않아도 된다고 판단했다. 그래서 기존에 StockManagerViewController가 NavigationController에 embeded되어있었지만, 그 관계를 끊어주고, 직접 코드로 NavigationBar를 구현해주었다.
그런데 오늘 코드리뷰를 받으며 Navigation방식으로 이동만하며 Navigation Bar를 커스터마이징 하는 방법이 있다는걸 새롭게 알았다.
1.NavigationController로 push
navigationController?.pushViewController(stockManagerViewController, animated: true)
navigationController를 이용하여 화면전환을 하기 때문에, StockManagerViewController에는 자동적으로 Navigation Bar가 생성된다.
뒤로가기 버튼이 자동으로 생성된 Navigation Bar가 생성된다.
2. 전환된 화면의 Controller에서 NavigationItem을 설정
navigationItem
이란 ViewController가 NavigationController로 푸시되었을 때 생기는 UINavigationItem
의 유니크한 인스턴스이다.
그래서 navigationItem
에 인스턴스 프로퍼티를 설정해줌으로써 Navigation Bar를 커스터마이징 할 수 있다.
let cancel = UIBarButtonItem(title: "닫기", style: .done, target: self, action: #selector(dismissStockManagerViewController))
navigationItem.rightBarButtonItem = cancel
navigationItem.title = "재고 수정"
navigationItem.hidesBackButton = true
selector의 메서드에서도 navigationController를 pop해서 이전 화면으로 전환되도록 구현한다.
private func dismissStockManagerViewController() {
navigationController?.popViewController(animated: true)
}
📡 NotificationCenter.default.post
의 object
와 userInfo
Instance Method
post(name:object:userInfo:)
Creates a notification with a given name, sender, and information and posts it to the notification center.func post(name aName: NSNotification.Name, object anObject: Any?, userInfo aUserInfo: [AnyHashable : Any]? = nil)
1. object
The object posting the notification.
notification을 보내는 object.
주로 발송자 객체를 보내는데 사용된다고 한다. 이는 addObserver
에서 object
를 지정해줄 시 빛을 발한다.
func addObserver(_ observer: Any, selector aSelector: Selector, name aName: NSNotification.Name?, object anObject: Any?)
anObject (= notifiaction 발송자)
The object that sends notifications to the observer. Specify a notification sender to deliver only notifications from this sender.
object, 발송자를 지정해주면, 해당 발송자로부터 온 notifiation만 받는다.
When nil, the notification center doesn’t use sender names as criteria for delivery.
nil 일 경우, 모든 object의 발송된 노티를 받는다.
2. userInfo
A user info dictionary with optional information about the notification.
notification과 관련된 user info의 딕셔너리 정보를 post할 때 넘겨줄 수 있다.
Author And Source
이 문제에 관하여(28.11.21 릴리 TIL : JuiceMaker 돌아보기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeahg_dev/28.11.21-릴리-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)