整个应用程序的iPhone工具栏

时间:2011-11-21 17:20:28

标签: iphone ios uitoolbar

我的应用基于navigationController。因此,我为某些视图设置了工具栏,而对于其他人,我没有调用setToolbarHidden:NOYES。 第一个问题,这是viewWillAppear方法吗?

然后在我的appDelegate中,我在工具栏上放了一个项目,但没有显示。 有人可以告诉我如何在这里使用委托协议,以便每个视图知道在按下某个项目时该怎么做??

我的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    

    //create itemViewcontroller
    EventosViewController *itemsViewController = [[EventosViewController alloc] init];

    //create UINavigationcontroller, stack only contains itemviewcontroller
    navController=[[UINavigationController alloc] initWithRootViewController:itemsViewController];
    //navController will retain itemviewcontroller, we can release it
    [itemsViewController release];

    UIBarButtonItem *systemItem1 = [[UIBarButtonItem alloc] 
                                    initWithBarButtonSystemItem:UIBarButtonSystemItemAdd
                                    target:self
                                    action:@selector(pressButton1:)];
    //Use this to put space in between your toolbox buttons
    UIBarButtonItem *flexItem = [[UIBarButtonItem alloc] 
                                 initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace
                                 target:nil
                                 action:nil];
    //Add buttons to the array
    NSArray *items = [NSArray arrayWithObjects: systemItem1, flexItem,nil];

    //release buttons
    [systemItem1 release];
    [flexItem release];

    //add array of buttons to toolbar
    [navController.toolbar setItems:items animated:NO];

    //set navController's view in window hierarchy
    [[self window] setRootViewController:navController];
    [navController release];

    // Override point for customization after application launch.
    [self.window makeKeyAndVisible];

    return YES;
}
提前thx!

2 个答案:

答案 0 :(得分:0)

我们默认隐藏工具栏。 toolbarItems应存储在相应的视图控制器中,而不是导航控制器中。

来自documentation

  

显示工具栏
  在iOS 3.0及更高版本中,导航控制器对象可以轻松地为每个屏幕提供自定义工具栏   导航界面。导航控制器对象现在管理一个   视图层次结构中的可选工具栏。显示时,此工具栏   从的toolbarItems属性获取其当前项集   主动视图控制器。当活动视图控制器更改时,   导航控制器更新工具栏项以匹配新视图   控制器,在适当的时候将新项目设置为动态。

     

默认情况下隐藏导航工具栏,但您可以显示它   你的导航界面通过调用setToolbarHidden:animated:   导航控制器对象的方法。如果不是你所有的观点   控制器支持工具栏项,您的委托对象可以调用它   在后续推送期间切换工具栏可见性的方法   和流行操作。

答案 1 :(得分:0)

你可以像这样保留工具栏吗

ThemeDetailViewController *themeDetail = [[ThemeDetailViewController alloc] init];
[self.navigationController pushViewController:themeDetail animated:YES];
themeDetail.toolbarItems = self.parentViewController.toolbarItems;