IOS学习笔记 - 多视图代码实现

原创 2016年08月30日 22:26:09

学习笔记之《精通IOS开发》第七版,第6章,多视图应用

声明:本人新手,此篇文章为学习笔记,无误导别人之意,且看切忘之

通过这章的学习,理解了多视图应用的底层实现

首先上代码:

import UIKit

class SwitchViewController: UIViewController {

    // 声明两个控制器
    private var blueViewController:BlueViewController!
    private var yellowViewController:YellowViewController!

    override func viewDidLoad() {
        super.viewDidLoad()

        // 获取blueViewController Blue和Yellow在storyboard中进行设置
        blueViewController = storyboard?.instantiateViewControllerWithIdentifier("Blue") as! BlueViewController
        blueViewController.view.frame = view.frame
        // 切换子控制器
        switchViewController(from:nil, to:blueViewController)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // 当内存不足时,两个子控制器都是可以释放的
        if blueViewController != nil && blueViewController.view.superview != nil {
            blueViewController = nil
        }

        if yellowViewController != nil && yellowViewController.view.superview != nil {
            yellowViewController = nil
        }
    }


    // 底部工具栏按钮点击事件 有点模拟tab bar controller容器控制器
    @IBAction func swicthViews(sender:UIBarButtonItem){

        // 根据黄色控制器视图是否为当前控制器子视图判断要创建哪个子控制器
        if yellowViewController?.view.superview == nil  {
            if yellowViewController == nil {
                yellowViewController = storyboard?.instantiateViewControllerWithIdentifier("Yellow") as! YellowViewController
            }
        } else if blueViewController?.view.superview == nil {
            if blueViewController == nil {
                blueViewController = storyboard?.instantiateViewControllerWithIdentifier("Blue") as! BlueViewController
            }
        }

        // 这个是动画
        UIView.beginAnimations("View Flip", context: nil)
        UIView.setAnimationDuration(0.4)
        UIView.setAnimationCurve(.EaseInOut)

        // 选择要切换的控制器
        if blueViewController != nil && blueViewController?.view.superview != nil {
            UIView.setAnimationTransition(.FlipFromRight, forView: view, cache: true)
            yellowViewController?.view.frame = self.view.frame
            switchViewController(from: blueViewController, to: yellowViewController)
        } else {
            UIView.setAnimationTransition(.FlipFromLeft, forView: view, cache: true)
            blueViewController?.view.frame = self.view.frame
            switchViewController(from: yellowViewController, to: blueViewController)
        }
        UIView.commitAnimations()
    }

    // 切换控制器方法
    private func switchViewController(from fromVC:UIViewController?, to toVc:UIViewController?) {

        // 添加新的子视图控制器前,移除当前子控制器,前提是有
        if fromVC != nil {
            fromVC!.willMoveToParentViewController(nil)
            fromVC!.view.removeFromSuperview()
            fromVC!.removeFromParentViewController()
        }

        // 添加子控制器和子视图
        if toVc != nil {
            self.addChildViewController(toVc!)
            self.view.insertSubview(toVc!.view, atIndex: 0)
            toVc!.didMoveToParentViewController(self)
        }
    }
}

图:控制id的设置
这里写图片描述

另外两个控制器没特殊的设置,就是改了一下storyboard中的background颜色设置

版权声明:本文为博主原创文章,然而你想怎么转就怎么转好了

相关文章推荐

【iOS学习笔记】代码实现常用控件UIButton、UISlider、UISwitch、UISegmentedControl

IOS中最常用到的控件UIButton、UISlider、UISwitch、UISegmentedControl通过Xib文件拖动生成非常简单,其实用代码实现也是一样的简单,当然,用代码实现能够掌握到...

IOS开发 左右弹出菜单视图 菜鸟纯代码实现思路

网上看了很多关于左右弹出菜单类的效果,现在很多IOS应用都应用这种特效,一是省空间,二是符合当代年轻人的触控体验等,先不说这个,我们聊聊技术上的实现方案 我这里就不说采用第三方组件进行开发了,就单纯的...
  • dangfm
  • dangfm
  • 2014-01-03 23:21
  • 1249

(iOS)iPhone手机程序源码:全代码实现选择视图界面NSArray

这是一个全部用代码实现界面,没有使用图片,也没有使用Interface Builder(IB)和storyboard。 要看源码,请看http://blog.sina.com.cn/s/blog_d...

ROS学习笔记(2):在ROS中使用OpenCV进行简单的图像处理---代码实现篇

再上一篇blog中,笔者总结了ROS系统中使用OpenCV库的进行简单图像处理的原理、系统相关的设置和程序包的下载。在这篇博客中,笔者将从代码层面介绍如何实现在ROS系统中读取图片,并使用OpenCV...

学习笔记(2)-标签传播算法伪代码实现

算法名称:社区发现中的标签传播算法(LPA) 算法输入:无向无权图邻接矩阵AdjacentMatrix,节点个数VerticeNum 算法输出:存储节点标签的分类数组Community//初始化...

Spring学习笔记---4-AOP代码实现及源码解释

一、AOP的实现者       AOP的工作目标就是将横切的问题,如:性能监控,事务处理,日志处理等,进行模块化。使用类似于OOP的方式进行切面的编程工作。位于AOP工具核心的是连接...

机器学习笔记(一)朴素贝叶斯的Python代码实现

上研究生的时候,一心想读生物信息学的方向,由此也选修了生物数学,计算生物学等相关课程。给我印象最深的是给我们计算生物学的主讲老师,他北大数学系毕业,后来做起了生物和数学的交叉学科研究。课上讲的一些算法...

WPF and Silverlight 学习笔记(二十二):使用代码实现绑定、绑定数据的验证

http://www.cnblogs.com/DragonInSea/archive/2009/05/22/1486801.html    http://www.cnblogs.com/mycom...

Tensorflow学习笔记--RNN精要及代码实现

RNN介绍 代码实现

SQL学习笔记5——用代码实现对列的 增、删、改和约束

--手动删除一列(删除EmpAddress列) alter table Employees drop column EmpAddress --手动增加一列(增加一列EmpAddr varchar(10...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)