首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将TabBar添加到基于NavigationController的iPhone应用程序

要将TabBar添加到基于NavigationController的iPhone应用程序,您可以遵循以下步骤:

  1. 创建一个新的UITabBarController类,并将其设置为项目中的初始视图控制器。
  2. 在UITabBarController中,创建一个新的UINavigationController实例,并将其添加到UITabBarController的viewControllers属性中。
  3. 将您的现有视图控制器(即基于NavigationController的iPhone应用程序的根视图控制器)作为新创建的UINavigationController的根视图控制器。
  4. 在UITabBarController中,创建其他所需的视图控制器,并将它们添加到UITabBarController的viewControllers属性中。
  5. 为每个视图控制器设置一个标题和图标,以便在UITabBar中显示。
  6. 在AppDelegate.swift文件中,将window的根视图控制器设置为UITabBarController。
  7. 运行应用程序,您将看到TabBar已成功添加到基于NavigationController的iPhone应用程序中。

以下是一个简单的代码示例:

代码语言:swift
复制
import UIKit

class TabBarController: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let firstViewController = UINavigationController(rootViewController: FirstViewController())
        firstViewController.tabBarItem = UITabBarItem(title: "First", image: UIImage(systemName: "square.grid.2x2"), tag: 0)

        let secondViewController = UINavigationController(rootViewController: SecondViewController())
        secondViewController.tabBarItem = UITabBarItem(title: "Second", image: UIImage(systemName: "list.bullet"), tag: 1)

        let tabBarList = [firstViewController, secondViewController]

        viewControllers = tabBarList
    }
}

class FirstViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

class SecondViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}

在AppDelegate.swift文件中:

代码语言:swift
复制
import UIKit

@main
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.

        let tabBarController = TabBarController()

        window = UIWindow(frame: UIScreen.main.bounds)
        window?.rootViewController = tabBarController
        window?.makeKeyAndVisible()

        return true
    }
}

这将创建一个带有两个选项卡的TabBar,分别是“First”和“Second”,并将它们添加到基于NavigationController的iPhone应用程序中。您可以根据需要添加更多选项卡和视图控制器。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【IOS开发基础系列】Storyboard专题

1.2 程序加载         如果你以前创建过基于 nib app(译者注:Xcode 3.x),你可能知道MainWindow.xib 文件。...由于无法从nib中加载应用程序委托,也无法从故事板文件中加载应用程序委托,我们必须告诉UIApplicationMain 应用程序委托类名称,否则它根本无法找到应用程序委托类。...Xcode 其实有一个专门用于Tabbar 应用程序模板(叫做 Tabbed Application 模板),当然 我们也可以使用这个模板。...故事板默认使用“Inferred”(依靠推断)设置,意思是该场景如果在NavigationController中显示则会显示导航条,如果在 TabBarController 中显示则会显示TabBar,...将该文件夹添加到项目中去。在TabBarItem “Guestures”属性面板,将 Players.png 设为它image。

1.1K30
  • UINavigationController 导航控制器概念属性方法

    )和UIViewController紧密结合了起来 总结: NavigationController管理东西: NavigationController管理多个Controller NavigationController...一样都是用push和pop方式推进推出各自管理东西NavigationItem包含多个UIBarButtonItem NavigationController管理着ToolBar,通过navigationController.toolbar...@property(nullable, nonatomic, weak) id delegate; 16、当一个controller被添加到导航中后...; (2)push时候隐藏底部栏,如push后隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; (3)获取管理它导航控制器 @...继承该父类控制器调用此方法都可以隐藏push来控制器底部TabBar - (void)pushViewController:(UIViewController *)viewController animated

    2.1K60

    编码篇-iOS开发中奇巧小伎

    不是禁止,而是暂时停止滚动) 45、使用xib设置UIView边框、圆角 46、将一个xib添加到另外一个xib上 47、处理字符串,使其首字母大写 48、获取字符串中数字 49、自动搜索功能,用户连续输入时候不搜索...、修改tabBarframe 52、修改键盘背景颜色 53.本来我statusbar是lightcontent,结果用UIImagePickerController会导致我statusbar样式变成黑色...应用程序完成启动 UIApplicationDidFinishLaunchingNotification 应用程序由挂起变活跃 UIApplicationWillResignActiveNotification...image 46、将一个xib添加到另外一个xib上 // 假设你自定义view名字为CustomView,你需要在CustomView.m中重写 `- (instancetype)initWithCoder...是lightcontent,结果用UIImagePickerController会导致我statusbar样式变成黑色 - (void)navigationController:(UINavigationController

    5.4K10

    iOS小技能:设置状态栏背景颜色(图片)

    通过上面的代码获取statusBar时,发现每次每次获取都调用 alloc:init方法,重新生成一个statusBar;然后添加到UIApplicationkeyWindow上,再设置背景颜色。...NSLog(@"状态栏高度:%f",statusHeight); //获取导航栏高度 CGFloat navHeight = self.navigationController.navigationBar.frame.size.height...; NSLog(@"导航栏高度:%f",navHeight); //获取tabBar高度 //1.在tabBarController中使用(你继承自UITabBarControllerVC) CGFloat...tabBarHeight = self.tabBar.frame.size.height; NSLog(@"tabBar高度:%f",tabBarHeight); //2.在非tabBarController...= tabBarVC.tabBar.frame.size.height; NSLog(@"tabBar高度:%f",tabBarHeight); see also iOS13适配暗黑模式方案:1、设置

    1.9K40

    Spring认证指南|了解如何将基于 Spring Boot JAR 应用程序转换为 WAR 文件。

    原标题:Spring认证指南|了解如何将基于 Spring Boot JAR 应用程序转换为 WAR 文件。...将 Spring Boot JAR 应用程序转换为 WAR Spring Boot 带有两个强大插件: spring-boot-gradle-plugin spring-boot-maven-plugin...它们本质上都具有相同功能,并提供从命令行运行 Spring Boot 应用程序以及捆绑可运行 JAR 能力。...几乎所有指南在接近尾声执行阶段都提到了这个主题。 一个流行主题是,许多人仍然希望生成 WAR 文件已部署在容器中。这两个插件也都支持。...有关如何配置应用程序为容器创建 WAR 文件详细步骤,请参阅: 使用 Maven 打包可执行 jar 和 war 文件 Spring Boot Gradle 插件或 Gradle 插件参考:打包可执行文件战争

    1.1K20

    iOS开发笔记(四)

    之前解决方案是新建一个NewLive工程,然后把Live文件手动添加到NewLive工程即可。 但是这样每次复制工程时候,都需要重新新建一次工程,再手动添加,很麻烦。...举一个简单例子: PRODUCT_NAME = Live IPHONEOS_DEPLOYMENT_TARGET = 7.0 // 1: iPhone/iPod touch. 2: iPad....,终于弄来一个iOS 8.4版本iphone,真机调试后发下问题: 新版本手绘礼物,监听了钻石更新notify,但是没有在dealloc时候移除,并且测试时候亦没有测出来。...pushViewController:myPurse animated:YES]; tabbar按钮在点击后,图像缩小 本意是想做缩小按钮上图片,问题代码所在 [tabBarItem setImageInsets...显示文本:Core Text 和 Core Graphics 框架根据文本生成一个位图,作为一个纹理上传到GPU并显示出来; 当滚动或者移动文本,纹理会被复用(类似光栅化) CPU绘图:基于 Quartz

    1.2K70

    iOS开发常用之网络

    WXTabBarController - 在系统UITabBarController基础上完美实现了安卓版微信TabBar滑动切换功能,单手操作iPhone 6 Plus切换TabBar一直是一件很痛苦事情...NavTopImage.swift - NavigationController动态缩放titleView。...animated-tab-bar - 让Tabbar项目能显示萌萌动画。 tabbar图标动画 - tabbar上图标的动画实现,源码推荐说明。...ADo_GuideView - 转动用户引导页(模仿网易bobo)因为没有从应用程序包里抓到@ 3x图片,建议在iPhone5模拟器运行,保证效果〜(版本新特性,导航页,引导页)。...ZLSwipeableViewSwift - Swift卡片堆叠效果实现(ZLSwipeableView)】可实现类似Tinder和Potluck应用程序的卡片堆叠效果,该项目基于ZLSwipeableView

    23.6K10

    XCode4.2.1 使用NavigationController实现View切换

    XCode4.2.1 使用NavigationController实现View切换 现在网上有很多关于NavigationController实现页面之间导航,但是大部分都是老版本实现方式,基于Window...老版本实现NavigationController项目源代码 ?...但是新版没有这个模板比如Single view application项目直接生存ViewController不带Window和 mainWindow.xib文件 ?...加入代码后显示界面就会出现导航栏了 如果要设置导航栏标题内容,只需修改ViewController.m,你第一个载入rootViewController ? 运行效果 ? ?...第二view上面导航按钮返回上一个view功能不需要使用代码实现,当然写代码也可以,参考代码如下 ? 希望对刚刚学习iphone开发有所帮助,我也是刚刚开始学习。一起学习一起进步。

    62380

    uni-app(优医咨询)项目实战 - 第1天

    vue-cli 方式 uni-app 是基于 Vue.js 开发框架,如果采用 Vue2 语法可以使用 vue-cli 来创建项目: # vue-cli 创建 uni-app 项目 vue create...Android 和 iPhone 手机 模拟器,是在电脑上虚拟出来手机环境,Android 需要安装 Android Studio,IOS 需要安装 Xcode 选择【真机】还是【模拟器】呢?...=========================================== 开发 IOS 时只能在 Mac OS 平台下,Android 则在 Mac OS 和 Windows 下都可以,基于这个情况咱们介绍一下如何将...,其中 pages 页面配置 path 指定页面的路径 style 为该路径相关配置,如背景色、导航栏等 HBuilder X 提供了快速创建页面的方式,在创建页面目录上右键,然后选择新建页面,再补充上页面的名称即可自动将页面的配置信息添加到...": "static/tabbar/my-active.png" } ] }, "uniIdRouter": {} } 再来看 subPackages 配置,新建分包页面需要手动添加到配置文件

    16310

    Flutter 构建完整应用手册-设计基础知识 顶

    部分应用程序主题 如果我们想在我们应用程序一部分中覆盖应用程序范围主题,我们可以将我们应用程序一部分包装在Theme小部件中。...注意:顺序很重要,必须与TabBar选项卡顺序相对应!...这些值对应于FontStyle,可用于TextStyle对象fontStyle属性。 3.将字体设置为默认值 对于如何将字体应用于文本,我们有两种选择:作为默认字体或仅在特定小部件中。...路线 将字体添加到包中 将包和字体添加到我们应用程序 使用字体 1.将字体添加到包中 要从包中导出字体,我们需要将字体文件导入到我们包项目的lib文件夹中。...路线 创建一个Scaffold 添加一个Drawer 用条目填充Drawer 以编程方式关闭Drawer 1.创建一个Scaffold 为了将Drawer添加到我们应用程序中,我们需要将其包装在Scaffold

    7.1K10

    iOS透明导航栏平滑过渡(进阶版)引实现过程结

    Tabbar切换友好效果: [self.navigationController setNavigationBarHidden:NO animated:NO]; 但是这样一来你在UINavigationController...这两个矛盾没有想到可以调和手段,除非在业务上就不显示Tabbar了,但始终不是长久之计。...现在问题已经讲完了,基于这些问题,我们自己来尝试实现一种更好平滑过渡效果,不自定义导航栏,直接利用系统原生导航栏,使用Category和Runtime技术,达到这个效果: 代码可以在示例工程下载...现在导航栏透明就比较完美了: 对于这种将导航栏背景直接设为透明情况,在 Tabbar 切换界面时,也不会出现导航栏收起小动画: 为UIViewController添加导航栏透明度属性 为了方便...- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(

    3.1K40
    领券