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


188

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

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

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

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

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

답변:


539

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

viewController.title = "some title"

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

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

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

navigationBar.topItem.title = "some title"

1
ViewController.type에는 title이라는 멤버가 없습니다. 그것이 내가 얻는 오류입니다.
상승

2
수업에서 직접 부르지 않습니다. UIViewController 서브 클래스의 인스턴스에서 호출합니다
drewag

예, ViewController클래스 자체를 말합니다. 당신은 참조해야 할 경우ViewController. 와 같은 클래스의 메소드 내 viewDidLoad에서을 사용하여 수행 할 수 있습니다 self. 클래스와 인스턴스의 차이점을 모르는 경우 클래스가 무엇인지 배우는 것이 좋습니다. 이 기사 가 도움 될 것입니다.
drewag

Xcode에서도 매력처럼 작동합니다. 약간만 변경하면됩니다.-> self.title = @ "some title";
초록

self.title = "일부 제목"이 저에게 효과적이었습니다. 감사합니다 ! 'navigationController? .navigationItem.title = "일부 제목"을 시도했습니다. 왜 작동하지 않는지 확실하지 않습니다. (내장 된 내비게이션 컨트롤러 외에도 제목을 표시하기 위해 배치 한 내비게이션 항목이 있습니다). 나는 여전히 그것이 효과가 있다고 생각하지만 그 이유를 모른다. 구조에 다시 오버플로를 쌓아 라!
Naishta

68

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

self.navigationItem.title = "Your Title"

1
나를 위해 일하십시오. iOS 11.4
Antony Wong

13

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

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

10

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

navigationItem.title = "Title"

UINavigationController의 자식 인 뷰 컨트롤러에서 제목을 어떻게 중앙에 배치합니까? 어떤 이유로 텍스트가 왼쪽에 정렬됩니다. var customTitle = self.navigationController?.visibleViewController?.navigationItem customTitle?.title = "Some Title"
bibscy

5

또한 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);
}

4

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

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

명심하십시오 :

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

UINavigationController님의 친구입니다.


4

사용하는 사람들을위한 정답 될 것이다

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

3

스위프트 3

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

navigationBarTitleItem.title = "Hello Bar"

2

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

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

1

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

super.tabBarController?.title = "foobar"

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

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


0

스위프트 4에서 :

스위프트 4

override func viewDidLoad() {
    super.viewDidLoad()

    self.title = "Your title"
}

도움이되기를 바랍니다.


2
이것은 대답의 절반에 불과합니다. 또한 아무것도 변경되지 않았다고 말하면 왜 게시 하시겠습니까?! 삭제 해주세요.
Eric Aya

@Moritz 당신은 중재자입니까? 예라고 대답하면 삭제하지 않고 삭제하지 않습니다.
Radames E. Hernandez

1
당신은 정말로 그것을 말합니까?, 나 위에는 완전히 같은 대답이 4 개 있습니다. 그렇다면 왜 나와 함께 와서 내 것을 지우라고 말합니까? 나는 지역 사회를 지원하는 신뢰할 수있는 사용자이며 반복되는 대답을하지 않습니다. 방금이 질문을 업데이트 된 빠른 버전으로 업데이트하고 싶었습니다.
Radames E. Hernandez

3
답변에 업데이트 된 내용이 없습니다. 이것은“정상적으로이 작업은로드 된 것입니다”부분과 같은 답변입니다.
Eric Aya

0

탭 표시 줄을 사용 하여 제목을 변경하기 때문에 탐색 표시 줄에 제목을 제공하기 위해 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"
}

0

스위프트 5.1

override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.title = "What ever you want"
}

0

스위프트 5.1

// 프로그래밍 방식 및 동적 탐색 모음 제목 설정

참고 : 먼저 NavigationControllerItem을 Your에 추가 ViewController한 다음 ViewController.swift파일로 이동하여에 복사하여 붙여 넣습니다 viewDidLoad().

navigationItem.title = "Your Title Here"

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.