【问题标题】:UINavigationController title is not displayed?UINavigationController 标题不显示?
【发布时间】:2011-01-03 16:02:04
【问题描述】:
我有正常的 UIViewController ,我在其中添加了 UINavigationControllerDelegate,我
在 willappear 中添加如下内容?但它不起作用?
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.navigationController.navigationItem.title = @"hai";
【问题讨论】:
标签:
ios
objective-c
uinavigationcontroller
【解决方案1】:
在我的情况下,当我在 init 方法中设置它时,iOS6 上的标题不可见:
- (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。
【解决方案2】:
您可能需要在控制器的“属性”选项卡中将导航栏设置为“带提示的黑色导航栏”。这对我有用。
【解决方案3】:
如果没有视图控制器被压入堆栈,即。您在堆栈顶部显示视图控制器(有时称为 rootViewController),您可以使用
[rootViewController setTitle:@"Title"];
请注意,您必须使用 setTitle - rootViewController.title=@"Title" 通常不起作用。
实际上,您可以使用任何视图控制器来执行此操作,即使它还没有经过 viewDidLoad 处理。如果它是通过编程方式创建的,只需使用
myViewController *mvc=[[myViewController alloc] initWithNibName:@"nameofnibwithout.xib" bundle:nil];
或者您可以在应用程序委托中将其声明为一个对象,使其成为 IBOutlet,创建一个 UIViewController 并将其类设置为 myViewController,并将其连接到 IBOutlet,因此它不是 nil。
【解决方案4】:
每个视图控制器都有一个导航项。您正在更改导航控制器的导航项......但除非导航控制器位于另一个导航控制器中,否则永远不会看到!而不是
self.navigationController.navigationItem.title = @"hai";
你想要的
self.navigationItem.title = @"hai";
或者,如果您的导航项的标题为 nil,则导航控制器将使用您的视图控制器的标题:
self.title = @"hai";
您应该简单地设置导航栏和标签栏都使用的视图标题,除非出于某种原因您想为每个标题指定不同的标题。
【解决方案5】:
你确定self.navigationController.navigationItem在你设置标题时不是nil吗?
【解决方案6】:
您应该在添加到导航控制器的视图控制器中设置标题。
即在添加视图控制器中
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"My Title";
}
或直接访问视图控制器的数组
AddFriendViewController *addFriendsView = [[AddFriendViewController alloc] initWithNibName:@"AddFriendViewController" bundle:nil];
[self.navigationController pushViewController:addFriendsView animated:YES];
[[self.navigationController.viewControllers objectAtIndex:0] setTitle:@"myTitle"];
[addFriendsView release];