在 iOS 中导航期间更改 UITabBar

Posted

技术标签:

【中文标题】在 iOS 中导航期间更改 UITabBar【英文标题】:Changing UITabBar during Navigation in iOS 【发布时间】:2010-11-17 09:12:26 【问题描述】:

当我的应用程序启动时,它会显示一个导航视图,底部有一个表格视图和一个标签栏。

类似这样的:

TabBar --> UINav1, UINav2, UINav3, UINav4

每个 UINav 都包含一个最终显示的 ViewController。

如果用户从 ListView(主屏幕)移动到详细视图,我想要做的是更改 UITabBar。

我不必更换整个标签栏,至少可以更改/删除按钮。

但是,如果我使用上述模型(将 TabBarController 设置为根控制器),那么它似乎在导航过程中几乎被卡住并且不可变。我能做的最好的就是将它隐藏在某些视图中。

一天来我一直在努力解决这个问题。

谢谢!

【问题讨论】:

【参考方案1】:

你可以使用

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated

在你的 UITabBarController 中设置 tabBar 任何你想要的 viewController

编辑:你可能不想看这个问题希望看起来很相似iPhone, how I hide a tab bar button?

【讨论】:

ebany,我正在努力寻找隐藏标签栏按钮的答案,以解决您昨天帮助我解决的问题。但我都无法工作:( setViewControllers 的问题在于您正在更改一个全局控制器的状态,因此即使您返回(通过导航)它也已更改。【参考方案2】:

这不是很常见,但您可以以模态方式呈现一个新的标签栏控制器及其关联的视图。

假设您的 listView 是 UITableViewController,您可以在 didSelectRowAtIndexpath 方法中推送新的标签栏控制器。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
// ...
[self.tabBarController presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated]

PS:在这种情况下,我会非常小心地构建 UI,因为它可能会让用户感到非常困惑)。

我希望它有所帮助。 罗格

【讨论】:

【参考方案3】:

经过进一步研究,认为这是不可行的。

【讨论】:

以上是关于在 iOS 中导航期间更改 UITabBar的主要内容,如果未能解决你的问题,请参考以下文章

如何在启动动画期间更改 iOS 应用程序图标背景颜色?

如何在 iOS 12.2 中更改导航栏高度?

如何在 iOS 7 启动期间更改状态栏样式

在 ios 6/ios 7 兼容应用程序中更改导航返回按钮操作

如何在 iOS7 的 UIPopoverController 中更改导航栏背景/颜色?

如何在 iOS 7 或 6 中更改导航栏颜色?