我有正常的UIViewController,其中我添加了UINavigationControllerDelegate,我添加如下willappear?但它不起作用?UINavigationController标题不显示?
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.navigationController.navigationItem.title = @"hai";
我有正常的UIViewController,其中我添加了UINavigationControllerDelegate,我添加如下willappear?但它不起作用?UINavigationController标题不显示?
[self.navigationController setNavigationBarHidden:NO animated:YES];
self.navigationController.navigationItem.title = @"hai";
您应该在添加到导航控制器的视图控制器中设置标题。
即在添加视图控制器
- (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];
你肯定self.navigationController.navigationItem
不是nil
当设置标题?
每个视图控制器都有一个导航项目。您正在更改导航控制器的导航项...但除非导航控制器位于另一个导航控制器内,否则将无法看到!取而代之的
self.navigationController.navigationItem.title = @"hai";
你想
self.navigationItem.title = @"hai";
,或者,如果您的导航项目的标题是零,导航控制器会根据您的视图控制器的标题:
self.title = @"hai";
您应该简单地设置查看标题,导航栏和标签栏都使用该标题,除非您想为某些原因为每个标题指定不同的标题。
如果没有viewcontroller被推入堆栈,即。你在显示栈(有时称为RootViewController的)的顶部视图 - 控制你可以,你必须使用的setTitle
[rootViewController setTitle:@"Title"];
注意做到这一点 - rootViewController.title = @“标题”,通常会无法正常工作。
其实,你可以用任何viewcontroller来做,即使它不是viewDidLoad的。如果它的编程方式创建,只是
myViewController *mvc=[[myViewController alloc] initWithNibName:@"nameofnibwithout.xib" bundle:nil];
创建,或者你可以声明其作为应用程序的委托对象,使其成为一个IBOutlet,创建一个UIViewController并设置其类myViewController,并将其连接到IBOutlet中所以它不是零。
您可能需要在控制器上的“属性”选项卡中将导航栏设置为“带提示的黑色导航栏”。这对我来说很有用。
在我的情况下,标题是不可见的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
。