2012-07-02 3 views
-1

Я пробовал все, что мог придумать здесь.Указать название панели навигации?

self.navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
self.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    self.navigationBar.topItem.title = @"Title"; 
    self.navigationItem.title = @"Title"; 
    self.title = @"Title"; 
    self.navigationBar.topItem.titleView.backgroundColor = [UIColor blueColor]; 
    self.navigationController.navigationBar.topItem.title = @"Title"; 
[self.view addSubview:self.navigationBar]; 

Я пробовал все это в надежде, что сработает, но никто из них не имеет. Как изменить название этой панели навигации? Это внутри метода init UIViewController.

+0

Все зависит от где панель навигации инициализирована. – Stavash

+0

Как сказал @stavash, вам может потребоваться указать, где была инициализирована панель. Например, если это произошло в другом классе, вы бы не использовали self, а скорее экземпляр этого класса. Поэтому, если вы сделали это в другом месте, это будет #import SomeClassName, а затем в заголовке SomeClassName * className; то ... вы можете сделать className.navigationBar.title = "Title"; –

+0

Кстати, представление не готово в методе init, поэтому я настоятельно рекомендую передать любой код, который вы решите viewDidLoad. – Stavash

ответ

1

Вам необходимо установить свой собственный массив элементов навигации. Вы должны передать массив с одним элементом, который имеет указанный вами название:

UINavigationBar *bar = [[[UINavigationBar alloc] init] autorelease]; 

UINavigationItem *navItem = [[[UINavigationItem alloc] initWithTitle:@"Title"] autorelease]; 
bar.items = [NSArray arrayWithObject:navItem]; 
0

Я точно не знаю, почему вы хотите, чтобы поместить его в инициализации, как правило, я предпочел бы поместить этот код в viewDidLoad.

Однако проблема, связанная с кодом, заключается в том, что при инициализации UINavigationBar у нее нет элементов в массиве элементов. Таким образом, вы фактически отправляете сообщение в нуль, что не приведет к сбою вашей программы, но ничего не сделает.

Это то, что я сделал бы.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)]; 
    navigationBar.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
    [navigationBar setItems:[NSArray arrayWithObject:[[UINavigationItem alloc]initWithTitle:@"Title"]]]; 
    navigationBar.topItem.titleView.backgroundColor = [UIColor blueColor]; 
    [self.view addSubview:navigationBar]; 
} 
1

Это всегда работает для меня:

self.navigationItem.title = @"Title"; 
0

Если вы используете навигацию контроллер затем

self.title = @"My Title"; 

должен сделать это в прошивке 7.

Смежные вопросы