为左按钮设置重复使用的导航栏项目按钮

时间:2013-04-30 17:50:15

标签: ios ios5 uinavigationcontroller uinavigationbar uinavigationitem

我在我的应用程序中使用导航栏,虽然不是通过导航控制器的控制器(通过故事板添加到VC)。

我想在导航控制器上设置一个左栏按钮项目,使其完全不同。这是菜单的堆栈样式,将滑入:

enter image description here 按照标准做法实施此按钮的正确方法是什么?我可以将按钮的bg剥离为可重复的,这不是问题,但我如何完成以下操作: 1.在按钮内实现图像 2.如果可能的话,通过外观API实现此按钮,这样代码就不是胶水代码,而是在所有拥有此代码的VC上重复使用。

如果我不能通过外观,那么在使用它的控制器中不必反复包含此代码的最佳方法是什么?

除此之外,有没有办法在故事板中显示此按钮项目并在故事板中链接/具有除视觉之外的用途。

2 个答案:

答案 0 :(得分:1)

好的,现在我跟着你。在这种情况下,只需创建一个自定义navBar类,然后将其添加到您的pch然后在必要时使用它或创建一个名为“UIViewControllerWithNavBar”的自定义UIViewController子类,然后您可以使用该类作为默认UIViewController类的替代。

@interface SomeViewController : UIViewControllerWithNavBar

这将允许您在已添加navBar的整个应用程序中重复使用该类。

答案 1 :(得分:0)

我最近写了一篇关于这个问题的博客文章,但是对于rightBarButtonItem。我不确定“后退”功能是否需要调整,但如果感兴趣的话,这里是博客文章:http://www.codebestowed.com/ios-shared-barbuttonitems/

基本思想是子类UINavigationController,给它一个BarButtonItem属性(下面代码中的self.myButton)并添加类似于的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.delegate = self;
}

- (void)navigationController:(UINavigationController *)navigationController
    willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if (!viewController.navigationItem.rightBarButtonItem) {
        viewController.navigationItem.rightBarButtonItem = self.myButton;
    }
}

博客文章详细介绍了如何在InterfaceBuilder中进一步设置这一点,这需要一点点破解(在这个答案中太多了)。