在没有 UINavigationController 的情况下将 UIBarButtonItem 添加到 UINavigation 栏

Posted

技术标签:

【中文标题】在没有 UINavigationController 的情况下将 UIBarButtonItem 添加到 UINavigation 栏【英文标题】:add UIBarButtonItem to UINavigation bar without UInavigationController 【发布时间】:2011-06-27 05:39:37 【问题描述】:

我有一个选项卡式应用程序,一些选项卡使用导航堆栈。没关系, 但是没有的标签,我想添加一个一致的布局。

所以我想知道如何在没有导航堆栈的情况下将 barButtonItems 添加到导航栏。

所以这不起作用(因为导航堆栈不存在) self.navigationItem.rightBarButtonItem = customItem;

如何将自定义项添加到 UInavigation 栏?

【问题讨论】:

【参考方案1】:

使用界面构建器将导航栏添加到您的 viewController xib 并从界面构建器添加栏按钮项。

【讨论】:

我尽量不使用 IB,主要是因为我只有一个表格视图和一个导航栏,但这可能是唯一的选择。 如果您通过 IB 或代码绑定了 UINavigationBar,您可以将栏按钮项添加到该导航栏的实例。只是不要使用 self.navigationItem.rightBarButtonItem = customItem;因为正如您所说,没有导航堆栈,所以只需绑定到您视图中的顶部导航栏。【参考方案2】:

如果您根本不关心栏的导航方面,那么也许您可以使用UIToolbar

- (void)viewDidAppear:(BOOL)animated 
    [super viewDidAppear:animated];

    UIToolbar *bar2 = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    [self.view addSubview:bar2];
    [bar2 release];

【讨论】:

这是一个有效的选项,我最初也尝试过,但是导航栏底部有一个黑色边框。它位于工具栏的顶部。有没有办法解决这个问题? 这是因为 UIToolbar 应该位于底部,因此黑线位于顶部(与 UINavigationBar 相对)。您可以查看这篇文章并为您的 UIToolBar 实现自定义背景(第二个下来,或选择的答案)。只需获取 UINavigationBar 的 1 像素宽图像并将其放在工具栏的背景上。 ***.com/questions/1941103/…【参考方案3】:

UIViewController 继承的类中使用下面将自定义项添加到UINavigationbar

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"my Button" style:UIBarButtonItemStylePlain target:self action:@selector(ClickButton:)];

已编辑:

对于不使用导航堆栈的控制器,您可以考虑为它们使用UIToolbar

【讨论】:

阅读我的帖子,如果没有 navigationController,NavigationItem 什么也做不了。 @cream-com :我想,没有navigation stack,你不能使用navigationBar 是的,这是有效的,但使用工具栏和导航栏存在 UI 差异,因为黑色边框(叹气) 你可以使用以下两个属性来获得导航栏的确切外观... @property(nonatomic, retain) UIColor *tintColor @property(nonatomic) UIBarStyle barStyle

以上是关于在没有 UINavigationController 的情况下将 UIBarButtonItem 添加到 UINavigation 栏的主要内容,如果未能解决你的问题,请参考以下文章

将 managedObjectContext 发送到 viewController 崩溃

如何正确关闭作为模式呈现的 UINavigationController?

ID:[...] 的 NSManagedObject 已失效

使用 UINavigationController 从另一个控制器更新或重新加载 UIViewController?

为啥我似乎必须在 iOS 应用程序委托中键入 window.rootViewController?

UINavigationController - 何时释放推送的视图控制器等