我想创建一个带有始终存在的标题图像的选项卡应用程序,无论哪个选项卡项处于活动状态。
示例是 Foursquare:
我希望能够放置按钮并在该标题上显示不同的信息。
那是一个简单的导航栏还是其他什么?
我想创建一个带有始终存在的标题图像的选项卡应用程序,无论哪个选项卡项处于活动状态。
示例是 Foursquare:
我希望能够放置按钮并在该标题上显示不同的信息。
那是一个简单的导航栏还是其他什么?
通常,每个选项卡都关联一个 viewController。当您选择“选项卡式应用程序”时,您可以在 xcode 创建的样板文件中注意到它。然后,在每个视图控制器中viewDidLoad
或在init
每个视图控制器中,您可以设置:
self.navigationItem.titleView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
然后只需更改self.navigationItem.leftBarButtonItem
并self.navigationItem.rightBarButtonItem
使用每个 viewController 上的控件。
编辑:
在 appDelegate (在didFinishLaunchingWithOptions
方法中),如果你想使用导航控制器,你必须设置这样的东西:
UIViewController *viewController1 = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
UIViewController *viewController2 = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
UINavigationController *myNav1=[[UINavigationController alloc] initWithRootViewController:viewController1];
UINavigationController *myNav2=[[UINavigationController alloc] initWithRootViewController:viewController2];
UIImage *navBackgroundImg = [UIImage imageNamed:@"bg_navBar.png"];
UIImage *tabBackgroundImg = [UIImage imageNamed:@"bg_tabBar.png"];
[myNav1.navigationBar setBackgroundImage:navBackgroundImg forBarMetrics:UIBarMetricsDefault];//iOS 5 only
[myNav2.navigationBar setBackgroundImage:navBackgroundImg forBarMetrics:UIBarMetricsDefault];//iOS 5 only
[[UITabBar appearance] setBackgroundImage:tabBackgroundImg];//iOS 5 only
self.tabBarController.viewControllers = [NSArray arrayWithObjects:myNav1, myNav2, nil];
self.window.rootViewController = self.tabBarController;
看起来像一个简单的导航栏,但它们并不简单。您需要在栏上放置/创建 NavigationItem(在放置/创建栏本身之后),然后将 titleView 设置为带有图像的自定义视图。根据文档,左栏按钮(在您的第一个屏幕中关闭)必须为零,否则 titleView 将被忽略。尽管您可以在此自定义视图中放置左侧按钮的按钮。
我发现最简单的方法是写:
- (void)viewDidLoad
{
[[UINavigationBar appearance] setBackgroundImage:
[UIImage imageNamed:@"UINavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}
在我的 MainViewController 上,在每个视图控制器上创建的所有导航栏都是这样配置的。