项目基本架构的搭建

本文详细介绍了iOS项目启动图片的设置,然后深入探讨了如何基于MVVM架构初始化项目,包括纯代码搭建、通过字符串、Json文件和Storyboard来构建TabBar子控制器。文中还涉及到异常处理、Swift的便利构造函数以及事件监听等内容。
摘要由CSDN通过智能技术生成

一、启动图片的设置

  项目启动图片的设置有多种方式,但是通常情况下,都是用LaunchImage来管理的。具体的操作方式比较简单,但是一定要注意,当你设置LaunchImage作为启动图片时,一定不要忘记把Launch Screen File中的文字给删除,并且在运行程序之前,最好是把之前运行过的程序给删掉:


设置启动图片的细节.png

二、初始化项目

  项目配置完成以后,通常情况下,需要重新划分结构。在iOS开发中,有多种架构可供选择,最常见的架构是MVC,它在软件开发过程中有着广泛的应用。由于MVC本身不是特别完美,后来又衍生出了MVP和MVVM架构。在这里,我们按照MVVM架构的思想对项目目录进行重新划分。

  1、使用纯代码来搭建项目

  来到General里面,把Main Interface里面的Main给删掉,来到AppDelegate中自己创建Window:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

        // 创建Window并制定它的frame
        window = UIWindow(frame: UIScreen.main.bounds)

        // 设置window的rootViewController
        window?.rootViewController = nil

        // 显示window
        window?.makeKeyAndVisible()

        return true
    }

  此时如果运行程序,肯定是看不到window的,因为我们把它设置为nil。接下来需要自定义TabBarController。新建一个名为QFMainViewController的类,让它继承自UITabBarController,然后来到AppDelegate中,将其设置为窗口的根控制器:

// 设置window的rootViewController
window?.rootViewController = QFMainViewController()

  此时运行程序就可以看到窗口,只不过它现在还没有颜色,看到的只是黑乎乎的一片。接下来要给它添加子控制器。根据实际情况,在各模块下面的Controller文件夹中创建对应的子控制器,然后来到QFMainViewController的viewDidLoad中创建子控制器:

override func viewDidLoad() {
    super.viewDidLoad()

    // 设置TabBar的颜色(仅仅只是设置QFMainViewController中TabBar的颜色)
    tabBar.tintColor = UIColor.init(red: 202 / 255.0, green: 155 / 255.0, blue: 104 / 255.0, alpha: 1)

    // 创建子控制器(tabBar按钮对应的子控制器)
    let liveChildVc = QFLiveViewController()

    // 设置子控制器的属性
    liveChildVc.title = "直播"  // 设置子控制器的标题
    liveChildVc.tabBarItem.image = UIImage(named: "live-n_25x19_")
    liveChildVc.tabBarItem.selectedImage = UIImage(named: "live-p_25x19_")

    // 包装导航控制器
    let liveChildVcNav = UINavigationController(rootViewController: liveChildVc)

    // 添加子控制器
    addChildViewController(liveChildVcNav)
}

  我们只是添加了一个子控制器,还有其它子控制器需要添加。但是,我们不能再像上面那样做了。重复的代码太多,需要抽一个方法来专门处理子控制器:


系统自带添加子控制器的方法.png

  我们看到,系统自带了一个添加子控制器的方法。但是,它不满足我们的要求,因为我们要传的参数远不止一个。为此,需要自定义添加子控制器的方法:

override func viewDidLoad() {
    super.viewDidLoad()

    // 创建子控制器(tabBar按钮对应的子控制器)
    addChildViewController(childVc: QFLiveViewController(), title: "首页", imageName: "live")
    addChildViewController(childVc: QFRankViewController(), title: "排行", imageName: "ranking")
    addChildViewController(childVc: UIViewController(), title: "", imageName: "")  // 占位用的
    addChildViewController(childVc: QFFoundViewController(), title: "发现", imageName: "found")
    addChildViewController(childVc: QFMineViewController(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值