iPhone : 내비게이션 바 제목 설정


86

모두 안녕. 나는 여전히 iPhone 개발에 익숙하지 않으며 내비게이션 바의 제목을 변경하는 방법을 파악하는 데 약간의 어려움이 있습니다. 이 사이트의 다른 질문에서 누군가가 다음을 사용하도록 권장했습니다.

viewController.title = @"title text";

하지만 그것은 나를 위해 작동하지 않습니다 ...이 작업을 수행하려면 UINavigationController를 추가해야합니까? 아니면 내 UIViewController 하위 클래스의 콘센트일까요? 도움이된다면 IB에서 탐색 모음을 정의하고 UIViewController 하위 클래스에서 제목을 설정하려고합니다. 이것은 나에게 두통을주는 단순한 것들 중 하나입니다. self.title = @ "제목 텍스트"; 안으로 viewDidLoad그리고 initWithNibName작동하지 않았습니다. 아무도 무슨 일이 일어나고 있는지, 어떻게 제대로 일어나고 있는지 알고 있습니까?

감사!

답변:


154

.title속성이 적용 되려면 뷰 컨트롤러가 일부 UINavigationController의 자식이어야합니다 . UINavigationBar가 단순히보기 인 경우 제목이 포함 된 탐색 항목을 푸시하거나 마지막 탐색 항목을 수정해야합니다.

UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

또는

bar.topItem.title = @"title text";

8
와. 나는 이것을 알아 내기 위해 포럼과 문서를 탐색하는데 지난 시간을 진지하게 보냈고, 이것이 이것보다 더 복잡 할 것이라고 스스로 확신했다. 이 코드는 매우 간단하며 IB에서 아무것도 다시 조작 할 필요가 없습니다. 완전한! KennyTM, 당신은 최고입니다. 내가 기억한다면, 당신은 또한 나의 NSDate 질문에 대답했고 저를 사전 조사로 설정했습니다. 당신은이 사이트에서 제가 가장 좋아하는 사람입니다. 모든 도움에 감사드립니다!
Arthur Skirvin

5
당신의 코멘트는 저를 웃고 궁금하게 만들었습니다. 여기 누가 이렇게 친구를 사귀 었나요? 여기에 일반적으로 사람들은 매우 유용하지만, (그가 / 그녀가 좌절 때 물론 아스 커 제외) 인간의 감정을 표현하지 않는 것
maltalef

스토리 보드 호환 솔루션에 대한 Sorin의 답변을 참조하십시오.
devios1 2013-07-23

정말 많은 시간을 절약 해 주신 답변에 감사드립니다. :) @kennytm
jerry_sjtu 2015-04-27

123

당신은 모든 코드에 의해 그 일을하는 경우 viewDidLoad의 방법 UIViewController만 추가해야self.title = @"title text";

이 같은:

- (void)viewDidLoad {
    [super viewDidLoad];
    self.title = @"title";
}

당신은 또한 시도 할 수 있습니다 self.navigationItem.title = @"title";

또한 navigationItem이 null이 아닌지 확인하고 탐색 모음에 사용자 지정 배경을 설정 한 경우 제목이 없는지 확인하십시오.


@SorinA, 감사합니다. 탐색 모음의 제목을 지정하는 더 좋은 방법입니다.
Tirth

33

사용하는 데 한 가지 문제가 있습니다. self.title = @"title";

탭 막대와 함께 탐색 막대를 사용하는 경우 위 줄은 탭 막대 항목의 레이블도 변경합니다. 이를 방지하려면 @testing이 제안한 것을 사용하십시오.

self.navigationItem.title = @"MyTitle";

13

navbar 제목 (navbar back button title이 아님)을 변경하려면이 코드가 작동합니다.

self.navigationController.topViewController.title = @"info";

9

tabBar 컨트롤러 내에서 navBar의 제목을 변경하려면 다음을 수행하십시오.

-(void)viewDidAppear:(BOOL)animated {
    self.navigationController.navigationBar.topItem.title = @"myTitle";
}

viewDidAppear는 이것을 해결하려고 2 시간 후에 나를 위해 트릭을했습니다. 감사합니다 :)
Tchelow 2011

topItem.title은 탐색 모음 제목 일 수도 있고 아닐 수도 있습니다. 뒤로 버튼이없는 최상위 화면이면 제목을 설정합니다. 그러나 뒤로 버튼이있는 경우 topItem.title은 실제로 뒤로 버튼 제목입니다.
user2962499 2010

5

내 탐색 기반 앱에서 다음을 수행합니다.

myViewController.navigationItem.title = @"MyTitle";

4

TabbarController에 통합 된 탐색 컨트롤러가 있습니다. 이것은 효과가 있었다

self.navigationItem.title=@"title";

4

기본적으로 탐색 컨트롤러는 '상위 항목'의 제목을 표시합니다.

그래서 appdelegate의 viewdidload 메소드에서 할 수 있습니다. 나는 그것을 테스트하고 작동합니다.

navController.navigationBar.topItem.title = @"Test";

2
UINavigationItem* item = [[UINavigationItem alloc] initWithTitle:@"title text"];
...
[bar pushNavigationItem:item animated:YES];
[item release];

이 코드는 작동했습니다.


SO에 오신 것을 환영하고 게시물에 감사드립니다. 이 정보를 댓글로 게시하는 것이 좋습니다 . 자세한 내용 은 답변 방법을 참조하세요.
Serge Belov 2012

2

스토리 보드로 작업하는 경우 컨트롤러를 클릭하고 속성 탭으로 전환 한 다음 제목 텍스트를 설정할 수 있습니다.


1

IB에서 설정하지 않은 동적 제목이 필요하다고 생각합니다.

그리고 viewController 객체가 NIB에 지정된 것이라고 가정합니다.

IB에서 더미 값으로 설정 한 다음 메서드를 디버그하여 더미 값이있는 컨트롤러를 확인하려고 할 수 있습니다.


1

TableViewController.m 내에서 :

self.navigationController.navigationBar.topItem.title = @ "아주 놀라운 제목 이군요";


1

당신의 모든 Swift-ers에게 이것은 완벽하게 작동했습니다. 제목 설정을 수행하는 짧은 방법 중 하나입니다.

override public func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
  if segue.identifier == "presentLineItem" {
    print("Setting Title")
    var vc = segue.destinationViewController as! LineItemsTableViewController
    vc.navigationItem.title = "Line Item"
  }
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.