在没有 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?