1

我想创建一个带有始终存在的标题图像的选项卡应用程序,无论哪个选项卡项处于活动状态。

示例是 Foursquare:

在此处输入图像描述

我希望能够放置按钮并在该标题上显示不同的信息。

那是一个简单的导航栏还是其他什么?

4

3 回答 3

3

通常,每个选项卡都关联一个 viewController。当您选择“选项卡式应用程序”时,您可以在 xcode 创建的样板文件中注意到它。然后,在每个视图控制器中viewDidLoad或在init每个视图控制器中,您可以设置:

self.navigationItem.titleView=[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];

然后只需更改self.navigationItem.leftBarButtonItemself.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;
于 2012-04-30T20:36:48.123 回答
0

看起来像一个简单的导航栏,但它们并不简单。您需要在栏上放置/创建 NavigationItem(在放置/创建栏本身之后),然后将 titleView 设置为带有图像的自定义视图。根据文档,左栏按钮(在您的第一个屏幕中关闭)必须为零,否则 titleView 将被忽略。尽管您可以在此自定义视图中放置左侧按钮的按钮。

于 2012-04-30T20:27:52.127 回答
0

我发现最简单的方法是写:

- (void)viewDidLoad
{
    [[UINavigationBar appearance] setBackgroundImage:
     [UIImage imageNamed:@"UINavigationBar.png"] forBarMetrics:UIBarMetricsDefault];
}

在我的 MainViewController 上,在每个视图控制器上创建的所有导航栏都是这样配置的。

于 2012-05-01T17:16:38.747 回答