我想创建一个标签应用程序,其中包含始终存在的标题图像,无论标签项目处于活动状态。
示例将是Foursquare:
我希望能够放置按钮,并在该标题上显示不同的信息。
这是一个简单的导航栏还是别的什么?
答案 0 :(得分:3)
通常,每个选项卡都与一个viewController相关联。您可以在选择“选项卡式应用程序”时xcode创建的样板中注意到它。
然后,在每个viewDidLoad
或每个viewcontroller的init
中,您可以设置:
self.navigationItem.titleView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
然后只需使用每个viewController上的控件更改self.navigationItem.leftBarButtonItem
和self.navigationItem.rightBarButtonItem
。
修改强>:
在appDelegate中(在didFinishLaunchingWithOptions
方法中)如果你想使用navigationcontrollers,你可以设置这样的东西:
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;
答案 1 :(得分:0)
看起来像一个简单的导航栏,但它们并不简单。您需要在栏上放置/创建NavigationItem(在放置/创建栏本身之后),然后将titleView设置为包含图像的自定义视图。根据文档,左栏按钮(在第一个屏幕中关闭)必须为零,否则将忽略titleView。虽然您可以在此自定义视图中为左按钮放置按钮。
答案 2 :(得分:0)
我发现最容易做的就是写:
- (void)viewDidLoad
{
[[UINavigationBar appearance] setBackgroundImage:
[UIImage imageNamed:@"UINavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}
在我的MainViewController中,在每个视图控制器上创建的所有导航栏都是这样配置的。