작성한 질문수
성공적인 진짜 iOS 개발자 되기 [기초부터 실무까지]
Navigation
작성
·
481
수정됨
0
강사님의 코드와 똑같이 코드를 구성했는데 버튼이 보이지 않습니다
addsubView방식은 보이는 상황입니다 ㅠㅠ
혹시 바뀐부분이있는걸까요
답변 2
저도 14.3.1로 확인을 헀습니다
제가 강의를 스토리보드로 구현하신부분을 코드로 구현하고있어 아래사진과같은방식으로 tabbar에 넣어준부분빼고는 다른점이 전혀없는데 이쪽에서 이런방식으로 구현한게 문제가 될수있을까요... 다시한번 확인해도 코드는 똑같습니다...
거의 정답을 찾긴 하셨네요 이유만 이해하시면 될 것 같습니다.
네비게이션 뷰컨을 생성할 때 스토리보드 사용 유무가 객체 생성되는 시간에 영향을 미칩니다.
좀 더 풀어서 설명드리자면
스토리보드 있는상태로 네비뷰컨을 만들때는 네비의 rootViewController가 스토리보드에 이미 있는 상태로 만들게 됩니다.
그 뜻은 네비뷰컨을 생성하자마자 바로 topItem도 생성됨을 의미하는 것이죠.
그래서 viewDidLoad시점에 navigationBar의 topItem객체가 존재하는걸 확인할 수 있고 그 곳에 내가 원하는 설정도 가능합니다.
하지만 스토리보드 없이 네비뷰컨을 만들면 rootViewController설정할때 바로 되는게 아닌 vc가 생성되고 난 후 rootViewController가 셋팅되게 됩니다.
그러니 네비뷰컨을 생성하자마자 topItem이 생길수가 없습니다.
약간의 시간이 더 필요하게 되는것이죠
그것이 스토리보드 없이 네비뷰컨을 만들었을 때 viewDidLoad에서 topItem이 없게 되는 차이를 만들게 됩니다.
말씀하신것 처럼 이런건 구글링해도 안나오는 내용이니 잘 알아두시면 앞으로 개발하실 때 많은 도움이 되실 겁니다.
안녕하세요
지금 다시 해봤는데 문제없이 잘 되는걸 확인했습니다.
Xcode버전이 어떻게 되시나요
제가 지금 테스트한 건 14.3.1입니다.
혹시몰라서 ViewController쪽에다가 해당코드를 넣어보니까 실행이되는 상황이라서 class HomeNavigationViewController: UINavigationController 에 viewdidLoad안에다가 해당코드를 넣었을때는 실행이 안되고 왜 여기서는 실행이되는건지...
아무리 구글링을 해도 알수가없어서 혹시 예상하시는 이유가 있을까요
해당 코드를 viewwillappear에 넣어주니 정상적으로 작동하는데 이유가 뭔지 잘 모르겠네요ㅠㅠ 혹시 생명주기를 고려해야할 이유가 있을까요/...?
거의 정답을 찾긴 하셨네요 이유만 이해하시면 될 것 같습니다.
네비게이션 뷰컨을 생성할 때 스토리보드 사용 유무가 객체 생성되는 시간에 영향을 미칩니다.
좀 더 풀어서 설명드리자면
스토리보드 있는상태로 네비뷰컨을 만들때는 네비의 rootViewController가 스토리보드에 이미 있는 상태로 만들게 됩니다.
그 뜻은 네비뷰컨을 생성하자마자 바로 topItem도 생성됨을 의미하는 것이죠.
그래서 viewDidLoad시점에 navigationBar의 topItem객체가 존재하는걸 확인할 수 있고 그 곳에 내가 원하는 설정도 가능합니다.
하지만 스토리보드 없이 네비뷰컨을 만들면 rootViewController설정할때 바로 되는게 아닌 vc가 생성되고 난 후 rootViewController가 셋팅되게 됩니다.
그러니 네비뷰컨을 생성하자마자 topItem이 생길수가 없습니다.
약간의 시간이 더 필요하게 되는것이죠
그것이 스토리보드 없이 네비뷰컨을 만들었을 때 viewDidLoad에서 topItem이 없게 되는 차이를 만들게 됩니다.
말씀하신것 처럼 이런건 구글링해도 안나오는 내용이니 잘 알아두시면 앞으로 개발하실 때 많은 도움이 되실 겁니다.