Programing

프로그래밍 방식으로 탐색 제목 변경

crosscheck 2020. 5. 28. 07:57
반응형

프로그래밍 방식으로 탐색 제목 변경


제목이있는 탐색 모음이 있습니다. 텍스트를 두 번 클릭하여 이름을 바꾸면 실제로 탐색 항목이라고 표시되어있을 수 있습니다.

다음과 같은 코드를 사용하여 텍스트를 변경하려고합니다.

declare navigation bar as navagationbar here
button stuff {
    navigationbar.text = "title"
}

그것은 분명히 내 코드가 아니며 작동 방식을 보여줍니다.

버튼을 누를 때마다 제목을 변경하고 싶습니다.


표시되는 뷰 컨트롤러 제목변경하여 제목을 변경합니다 .

viewController.title = "some title"

일반적으로 이것은 뷰 컨트롤러에서로드 된 뷰에서 수행됩니다.

override func viewDidLoad() {
    super.viewDidLoad()
    self.title = "some title"
}

그러나 이것은 뷰 컨트롤러가 UINavigationController에 임베드 된 경우에만 작동합니다. 나는 높은 이 일을 대신 탐색 모음 자신을 만드는 것이 좋습니다. 탐색 표시 줄을 직접 작성해야하는 경우 다음을 수행하여 제목을 변경할 수 있습니다.

navigationBar.topItem.title = "some title"

에서 다음을 시도하십시오 viewDidLoad

self.navigationItem.title = "Your Title"

아래 코드는 Xcode 7에서 작동합니다.

override func viewDidLoad() {        
    super.viewDidLoad()
    self.navigationItem.title = "Your Title"
}

나는 이것이 효과가 있음을 발견했다.

navigationItem.title = "Title"

또한 Navigation Bar수동으로 만들려고하면 이 코드가 도움이 될 것입니다

func setNavBarToTheView() {
    let navBar: UINavigationBar = UINavigationBar(frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 64.0))
    self.view.addSubview(navBar);
    let navItem = UINavigationItem(title: "Camera");
    let doneItem = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.cancel, target: self, action: #selector(CameraViewController.onClickBack));
    navItem.leftBarButtonItem = doneItem;
    navBar.setItems([navItem], animated: true);
}

일반적으로 가장 좋은 방법은에서 제목을 설정하는 것 UIViewController입니다. 이렇게하면가 UINavigationItem설정됩니다. 일반적으로 이것은 프로그래밍 방식으로 할당 UINavigationBar되지 않은 것을 할당하고 초기화하는 것보다 낫습니다 .

의 이점과 기능 중 일부를 놓치게 UINavigationBar되었습니다. 다음은 도움이 될 수있는 설명서 의 링크 입니다. 실제 막대 및에서 설정할 수있는 다양한 속성에 대해 설명합니다 UINavigationItem.

명심하십시오 :

  1. 뒤로 버튼 기능이 손실됩니다 (직접 연결하지 않는 한)
  2. 내장 된 "왼쪽에서 드래그하여 뒤로 스 와이프"제스처가 없어졌습니다.

UINavigationController님의 친구입니다.


스위프트 3

스토리 보드의 탐색 모음 (오브젝트 브라우저에서)과 함께 제공되는 탐색 제목 표시 줄 항목의 콘센트를 만들었습니다. 그런 다음 아래 줄을 고소했습니다.

navigationBarTitleItem.title = "Hello Bar"

사용하는 사람에 대한 정답

override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationItem.title = "Your Text"
}

스위프트 4에서 :

스위프트 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

도움이되기를 바랍니다.


NavigationController내부에 내장 된 경우 TabBarController아래를 참조하십시오.

super.tabBarController?.title = "foobar"

여기에 이미지 설명을 입력하십시오

디버거 스크립트를 사용하여 이와 같은 문제를 디버깅 할 수 있습니다. 시도 드릴링의 pvc 계층 구조의 모든 보이는 / 숨겨진보기를 인쇄 명령을 사용합니다.


탭 표시 줄을 사용 하여 제목을 변경하기 때문에 탐색 표시 줄에 제목을 제공하기 위해 self.navigationItem.title = "Your Title Here"over self.title = "Your Title Here"사용 하는 것이 self.title좋습니다. 다음 코드를 한 번 시도해야합니다.

참고 : 작업을 수행하기 전에 슈퍼 뷰 수명주기를 호출해야합니다.

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        setupNavBar()
    }
}

private func setupNavBar() {
    self.navigationItem.title = "Your Title Here"
}

탐색 컨트롤러에 포함 된 페이지보기 컨트롤러의 자식보기 컨트롤러에서 제목을 변경하려면 다음과 같이됩니다.

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    self.parent?.title = "some title"
}

참고 URL : https://stackoverflow.com/questions/25167458/changing-navigation-title-programmatically

반응형