• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 使用 UITabBar 和 UINavigationBar

[复制链接]
菜鸟教程小白 发表于 2022-12-13 00:26:38 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在同时使用 UITabBar 和 UINavigationBar 时遇到问题。我的意图是让 tabBar 显示我的 3 个选项卡,并在每个显示自定义名称的选项卡上显示我的 navBar,并且在其中一些选项卡上还显示一些按钮(例如添加按钮)。

我在 AppDelegate 的 didFinishLaunchingWithOptions 中创建了 View Controller :

AAA *vc1 = [[AAA alloc] init];
BBB *vc2 = [[BBB alloc] init];
CCC *vc3 = [[CCC alloc] init];

创建 tabBar 并填充它:

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = @[vc1, vc2, vc3];

接下来,我在这些 View Controller 的 tabBarItems 中添加了一些标题和图像,这些都可以正常工作,但我想在应用程序顶部显示导航栏。所以我创建了导航 Controller ,但我不知道我需要用什么 View Controller 来启动它。如果我使用 vc1 并将 navController 设置为 rootViewController,应用程序会显示 vc1 的 View 并显示 navBar,但不显示 tabBar。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc1];
self.window.rootViewController = navController;

//self.window.rootViewController = self.tabBarController;

我尝试将 tabBarController 设置为 init navController 并将 navController 设置为 rootViewController - 在本例中, View 、tabBar 和 navBAr 显示正确,但我没有与 View vc1、vc2、vc3 关联的 navBarItems。

这就是我创建 navBarItems 的方式(例如在 AAA.m 中):

- (instancetype)init {
self = [super init];
if (self) {
    UINavigationItem *navItem = self.navigationItem;
    navItem.title = @"name";
}
return self;
}

我需要做些什么才能使其协同工作?谢谢。

编辑:

我对代码进行了一些修改,现在导航栏可见,但仅在 UINavigationController 的 initWithRootViewController 方法中设置的 View Controller 上可见。例如,在下面的代码中,我只能在 vc2 上看到每个 View 上的标签栏和导航栏。我的意图是在这三个 vc 中的每一个上都有标签栏和导航栏。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:vc2];

self.tabBarController = [[UITabBarController alloc] init];
self.tabBarController.viewControllers = [NSArray arrayWithObjects:vc1, navController, vc3, nil];


self.window.rootViewController = self.tabBarController;



Best Answer-推荐答案


好的,我有一个适合您的方法...为此,您需要在 Storyboard 中进行更改。 这是一个截图 enter image description here

现在为 UITabBar 创建一个类:class TabBarViewController: UITabBarController

这个类不要写任何东西,仅供引用。

在 AppDelegate 类中,方法:didlaunchFinish:

let vcTabBarViewController = STORYBOARD.instantiateViewController(withIdentifier: "TabBarViewController") as? TabBarViewController
        navigationController.viewControllers = [vcTabBarViewController!]

现在在第一个选项卡上的第一个 View Controller 中, 在 viewDidLoad 方法中: 粘贴这些行:

let tabBar = self.tabBarController?.tabBar
 let homeTab = tabBar?.items?[0] as UITabBarItem!
 let searchTab = tabBar?.items?[1] as UITabBarItem!
 let myProfileTab = tabBar?.items?[4] as UITabBarItem!

homeTab?.image = UIImage(named: "home-select")!.withRenderingMode(.alwaysOriginal)
homeTab?.image = UIImage(named: "home")!.withRenderingMode(.alwaysTemplate)

searchTab?.image = UIImage(named: "search-select")!.withRenderingMode(.alwaysOriginal)
searchTab?.image = UIImage(named: "search")!.withRenderingMode(.alwaysTemplate)

希望这能解决您的问题。

关于ios - 使用 UITabBar 和 UINavigationBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43154704/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap