我在我的应用程序中使用导航栏,虽然不是通过导航控制器的控制器(通过故事板添加到VC)。
我想在导航控制器上设置一个左栏按钮项目,使其完全不同。这是菜单的堆栈样式,将滑入:
按照标准做法实施此按钮的正确方法是什么?我可以将按钮的bg剥离为可重复的,这不是问题,但我如何完成以下操作: 1.在按钮内实现图像 2.如果可能的话,通过外观API实现此按钮,这样代码就不是胶水代码,而是在所有拥有此代码的VC上重复使用。
如果我不能通过外观,那么在使用它的控制器中不必反复包含此代码的最佳方法是什么?
除此之外,有没有办法在故事板中显示此按钮项目并在故事板中链接/具有除视觉之外的用途。
答案 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中进一步设置这一点,这需要一点点破解(在这个答案中太多了)。