我需要一些关于UINavigationControllers / UIBarButtonItems的信息

时间:2012-05-23 17:19:36

标签: objective-c ios uinavigationcontroller uibarbuttonitem

我觉得这个问题对于很多人来说听起来很无聊。但我仍然是iOS开发的初学者,即使我在改进,有些事情仍然让我感到困惑。 我的应用程序的菜单具有以下配置:包含导航栏的导航控制器,以及嵌入包含导航项btw的视图控制器。 我的导航栏将UINavigationBar子类化,使其看起来像我想要的那样。

现在,我只想添加一个带有i(信息)的自定义BarButtonItem,我已经绘制了它。这就是我的问题:如何添加此按钮?

非常感谢您的建议。

2 个答案:

答案 0 :(得分:1)

// Create the Info button
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];

// Give it an action handler
[infoButton addTarget:self 
               action:@selector(infoButtonAction:)
     forControlEvents:UIControlEventTouchUpInside];

// Create a UIBarButtonItem to "contain" the Info button
UIBarButtonItem *infoItem = [[UIBarButtonItem alloc] initWithCustomView:infoButton];

// Add the UIBarButtonItem to the navigation bar (on the left side)
[self.navigationItem setLeftBarButtonItem:infoItem animated:NO];

动作处理程序:

- (void)infoButtonAction:(id)sender {
    NSLog(@"Tapped on info button!");
}

答案 1 :(得分:1)

这可能不是您问题的直接答案,但如果您使用的是UINavigationController,它可能会阻止问题。而不是子类化UINavigationBar来定制它的接口,只需使用它的UIAppearance方法,然后像普通一样创建一个UINavigationController。

// Create navigation controller.
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:myViewController];

// Customize navigation bar appearance.
[[UINavigationBar appearance] setTintColor:[UIColor blueColor]];
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigation-bar-background"] forBarMetrics:UIBarMetricsDefault];