0

탐색 컨트롤러의 도구 모음에 두 개의 막대 버튼 항목을 포함시켜야하는이 코드 조각이 작동하지 않는 이유가 확실하지 않습니다. 코드를 실행할 때 도구 모음 자체가 표시되지만 막대 단추 항목은 표시되지 않습니다. 여기서 내가 뭘 잘못하고 있니? 관심을 가져 주셔서 감사합니다.UIBarButtonItems가 Swift를 사용하여 프로그래밍 방식으로 생성되었습니다.

class NavigationController: UINavigationController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     //Tool bar appearance 
     toolbar.barTintColor = UIColor.blackColor() 


     //Show tool bar by default 
     self.navigationController?.toolbarHidden = false 

     //Icons all located in images.xcassets 
     let homeImage = UIImage(named: "home") 
     let gameImage = UIImage(named: "logo") 

     var toolBarItems = [UIBarButtonItem]() 

     let homeButton = UIBarButtonItem(image: homeImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(NavigationController.toHome)) 
     homeButton.title = "Home" 


     let gameButton = UIBarButtonItem(image: gameImage, style: UIBarButtonItemStyle.Plain, target: self, action: #selector(NavigationController.toGame)) 
     homeButton.title = "Game" 

     //Place the bar items in toolBarItems array 
     toolBarItems.append(homeButton) 
     toolBarItems.append(gameButton) 

     //self.toolbar.items = toolBarItems 
     self.toolbar.setItems(toolBarItems, animated: true) 

    }//End viewDidLoad 


    func toHome() { 
     let homeVC = HomeViewController(nibName: "HomeViewController", bundle: nil) 
     self.pushViewController(homeVC, animated: true) 
    } 

    func toGame() { 
     let gameVC = GameViewController(nibName: "GameViewController", bundle: nil) 
     self.pushViewController(gameVC, animated: true) 
    } 

} 

답변

0

잘 모르겠지만 단추 크기가 0으로 생각됩니다. 따라서 제약 조건을 추가하거나 프레임 크기를 조정해야합니다. view hierarchy debugger을 사용하여 디버깅을 시도 할 수 있습니다.

0

아마 당신은 내가 당신의 코드에 의해 혼동하고있어이 toolbarHidden = false

self.navigationController?.toolbarHidden = false 을 교체해야합니다. 다른 ViewController가 의존하는 하나의 Navigation Controller입니까, 아니면 하나의 Dependent ViewController입니까?이 경우 Navigation Controller로 보입니까? 아니면 실수로 탐색 컨트롤러입니까? (그다지 좋지 않음)

왜 물어 보는가? 한 번에이 네비게이션 컨트롤러 자체가 아닌 self.navigationController?.toolbarHidden = false 인 상위 네비게이션 컨트롤러를 언급하고 있습니다. 나머지 코드에서는이 컨트롤러 자체를 참조합니다.

희망이 있으면 올바른 생각이 들게됩니다.

+0

이 클래스는 실제로 다른 모든보기 컨트롤러가 의존하는 하나의 네비게이션 컨트롤러입니다. 내비게이션 컨트롤러에 대한 이해에서부터, 내비게이션 바 및 툴바가 있으며, 바 버튼 아이템을 임베딩 할 수 있습니다. 내가하려는 것은이 네비게이션 컨트롤러에 속하는 툴바에 바 버튼을 내장하는 것으로, 네비게이션 컨트롤러의 자식 인 모든 뷰 컨트롤러에 궁극적으로 표시되어야합니다. –

+0

나는 그것이 단지 toolbarhidden = false이어야하는 이유를 지금 이해하고있다. 한 줄을 고쳤지 만, 여전히 바뀌었다. 툴바는 계속 표시되지만 막대 버튼은 표시되지 않습니다. –

+0

저는 보통 스토리 보드에 이러한 모든 작업을 수행하게합니다. 이 경우에는 rootVieController가 자동으로 정의됩니다. 너 하나있어? 스토리 보드 또는 프로그래밍 방식으로 정의 되었습니까? NavigationController는이 루트 컨트롤러가있는 모든 것만을 표시하고 레이아웃합니다. – jboi

1

종속 컨트롤러에 대해 두 번째 .swift 파일을 만들었습니까? 이 코드를 종속 컨트롤러 파일로 옮겨야합니다.

self.navigationController?.toolbarHidden = false 

    let button1 = UIBarButtonItem(title: "home", style: .Plain, target: self, action: #selector(SecondViewController.home)) 

    let myToolBar = [button1] 

    self.setToolbarItems(myToolBar, animated: true) 
+0

이고 예를 볼 수 있습니다. 이전에 말했던 것처럼 toolbar.hidden = false로 할 수 있습니다. 고맙습니다! 내 코드도 수정 해 줄 것입니다. – nadi9

+0

"종속 컨트롤러"가 의미하는 바가 확실하지 않습니다. –

+0

을 의미합니다. 내 프로젝트의 각 컨트롤러에 대한 파일이 있습니다. 하나의 .swift는 탐색 컨트롤러 용이고 다른 하나는 피고용인 (예 : 테이블보기 컨트롤러 또는보기 컨트롤러) – nadi9