0

탐색 모음과 관련하여 질문이 있습니다.iOS에서 탐색 항목을 가져올 수 없습니다.

iOS에서 이해 한대로 : segue에 의해 열린보기 컨트롤러는 상위보기 컨트롤러의 탐색 막대를 상속받습니다. 지금까지 올바른가?

스택 내의보기 컨트롤러가 복잡한 세그 스택 (예 : TableViewController가 열리는 TabBarController를 여는 ...)에 탐색 바를 "소유"합니까?

나는 종종 제목이나 바 버튼 항목을 설정하기 위해 실제 네비게이션 항목을 가져올 위치를 모른다라는 문제가 발생합니다. 이 경우

, 나는 다음과 같은 컨트롤러가 :

  • TabBarController
  • EventPostsViewController - 한>를 작성하려면 -> 게시물의 목록을 표시하려면 TabBarController
  • CreatePostViewController 내에서 탭이다 새 게시물

따라서 EventPostsViewController 내에서이 작업을 수행 할 수 있습니다 (작동 가능).

class EventPostsViewController: UITableViewController { 
    ... 
    override func viewWillAppear(animated: Bool) { 
     ... 
     // This solution works, but only for EventPostsViewController 
     self.tabBarController?.navigationItem.title = "text" 

EventPostsViewController을 통해 세그먼트로 열리는 CreatePostViewController 내에서이 솔루션 중 어느 것도 작동하지 않습니다.

class CreatePostViewController: UIViewController { 
    ... 
    override func viewWillAppear(animated: Bool) { 
     ... 
     // Neither of these solutions works 
     self.navigationItem.title = "Text" 
     self.tabBarController?.navigationItem.title = "Text" 
     self.navigationController?.navigationItem.title = "Text" 

어떻게 실제 탐색 모음/navigationItem을받을 수 있나요?

+1

어떤 종류의? push segue가 아니라면 navigationController가 없으므로 navigationItem도 없습니다. –

+0

답장을 보내 주셔서 감사합니다! '예 (예 : 푸시)'섹그입니다. 푸시가 사용 중지되지 않았습니까? – mitchkman

답변

0

바보 같은 간단한 실수는 내가 인터페이스 빌더를 사용하여 뷰 컨트롤러와 내 사용자 지정 CreatePostViewController를 연결하는 것을 잊었다 때마다 :)

를 반복합니다.

enter image description here

이 코드는 이제 작동합니다 SEGUE의

class CreatePostViewController: UIViewController { 
    ... 
    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated); 
     self.navigationController?.setNavigationBarHidden(false, animated: false) 

     // Set title 
     self.navigationItem.title = "Write Post" 

     // Add Submit button 
     var submitButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.Done, target: self, action: "submitPost:") 
     self.navigationItem.rightBarButtonItem = submitButton 
    } 
    ... 
}