关于storyboard的理解

一直想了解storyboard到底做了哪些工作,但是网上大多都是讲怎么用怎么做映射,怎么用的。但是却没有看到它自己对开发软件做了哪些工作。本文围绕着一个跳转黑屏的问题进行探讨,理解storyboard的作用。

学iOS开发已经有了一段时间了,最开始的学习都是靠视频,以及书籍。很多教学都是拖控件啊,最开始给我的感觉用就是只需要在storyboard里面拖拖控件,了解了解mvc就好。然后又开始了解Cocoa框架,开始手写一些view,然后也学到了不少,至少对Cocoa的基本控件还是比较熟了。

有一次在做vc跳转的时候,居然跳转过去全是黑的
用的代码:

self.navigationController?.pushViewController(secondViewController(), animated: true)

看了视频很快解决了问题,得用storyboard id实例化视图

let secondVc = self.storyboard?.instantiateViewControllerWithIdentifier("secondvc") as! secondViewController

问题是解决了,但是这也让我产生了疑惑:到底storyboard做了哪些工作。
对这个问题研究下去我发现了这些东西:

这里写图片描述

请仔细关注红圈的地方

  • 一个viewController自带有一个UIView
  • storyboard是可选的
  • 跳转视图需要指定id或者通过segue进行

接下来就是我对跳转视图出现黑屏现象的解释与理解:

  1. 一个场景对应了一个VC(ViewController)
  2. storyboard对拖入的控件做了初始化与加载(就是显示)。
  3. 开始的跳转其实不是跳转,是对secondView这个类的实例化
    self.navigationController?.pushViewController(secondViewController(), animated: true)

    我push过去的是secondViewController(),这里边并没有加载view的实现

为了验证我这说法,我做了一个具体的验证:
我在secondView中添加了以下代码:

 override func viewDidLoad() {
        super.viewDidLoad()
        let lable:UILabel = UILabel(frame: CGRect(x: 50, y: 200, width: 50, height: 50))
        lable.backgroundColor=UIColor.redColor()
        lable.text = "lable"
        self.view.addSubview(lable)
        // Do any additional setup after loading the view.
    }

依旧使用代码:
self.navigationController?.pushViewController(secondViewController(), animated: true)进行跳转
结果显示是这样
这里写图片描述

结果也证实了我的说法,
原因就是实例化的VC 并没有把自己写的view(以及控件)添加到VC的View上

写得比较凌乱,希望能懂我说的什么吧。

欢迎留下问题进行探讨。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值