UINavigationController标题不显示?

时间:2010-01-11 07:10:57

标签: ios objective-c uinavigationcontroller

我有正常的UIViewController,其中我添加了UINavigationControllerDelegate,i 在willappear中添加如下内容?但它没有用?

    [self.navigationController setNavigationBarHidden:NO animated:YES];
    self.navigationController.navigationItem.title = @"hai";

6 个答案:

答案 0 :(得分:43)

您应该在添加到导航控制器的视图控制器中设置标题。

即。在添加视图控制器

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

或直接访问viewcontrollers数组

        AddFriendViewController *addFriendsView = [[AddFriendViewController alloc] initWithNibName:@"AddFriendViewController" bundle:nil];
        [self.navigationController pushViewController:addFriendsView animated:YES];
        [[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"];
        [addFriendsView release];

答案 1 :(得分:16)

每个视图控制器都有一个导航项。您正在更改导航控制器的导航项...但除非导航控制器位于另一个导航控制器内,否则永远不会看到它!而不是

self.navigationController.navigationItem.title = @"hai";

你想要

self.navigationItem.title = @"hai";

或者,如果导航项目的标题为零,导航控制器将使用您的视图控制器的标题:

self.title = @"hai";

您应该只设置导航栏和标签栏使用的视图标题,除非您因某些原因要为每个标题指定不同的标题。

答案 2 :(得分:1)

在我的情况下,当我在iOS6方法中设置标题时,标题在init上不可见:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        self.title = LS(@"Favorites");
        self.tabBarItem.title = LS(@"Favorites");
        self.tabBarItem.image = [UIImage imageNamed:@"star"];
    }

    return self;
}

所以,它应该从那里移到ViewDidLoad

答案 3 :(得分:0)

设置标题后,您确定self.navigationController.navigationItem不是nil吗?

答案 4 :(得分:0)

如果没有将控制器推入堆栈,即。你正在堆栈顶部显示viewcontroller(有时称为rootViewController),你可以用它来实现

[rootViewController setTitle:@"Title"];

请注意,您必须使用 setTitle - rootViewController.title = @“Title”通常不起作用。

实际上,你可以使用任何一个viewcontroller,即使它还没有viewDidLoad。如果以编程方式创建,只需使用

创建它
myViewController *mvc=[[myViewController alloc] initWithNibName:@"nameofnibwithout.xib" bundle:nil];

或者您可以将其声明为app委托中的对象,将其设置为IBOutlet,创建UIViewController并将其类设置为myViewController,并将其连接到IBOutlet,因此它不是nil。

答案 5 :(得分:0)

您可能需要在控制器的“属性”选项卡中将导航栏设置为“带提示的黑色导航栏”。这对我有用。