关于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上

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

欢迎留下问题进行探讨。

时间: 2024-10-16 06:47:19

关于storyboard的理解的相关文章

IOS入门之StoryBoard

概述 在iOS的发展历程中,IOS开发经历了三种主要流派:使用代码手写UI及布局:使用单个xib文件组织viewController或者view:使用StoryBoard来通过单个或很少的几个文件构建全部UI.而在最近几年的开发中,苹果对 Storyboard 的开发力度也不断增强,添加了更多功能和特性,大大方便了界面的开发.适配以及提升代码性能. 我们来看看三种方式的主要区别: 手写页面和逻辑代码 如果你的目的是写一些可以高度重用的控件提供给其他开发者使用,那毫无疑问最好的选择应该是使用代码来

Storyboard & XIB 自己的理解

//1.storyboard //(1) //此处bundle:nil 等价于 [NSBundle mainBundle] //    SecondViewController *secondVc = [[UIStoryboard storyboardWithName:@"Main" bundle:nil]instantiateViewControllerWithIdentifier:@"Second"]; //    SecondViewController *s

关于代码手写UI,xib和StoryBoard

代码手写UI 这种方法经常被学院派的极客或者依赖多人合作的大型项目大规模使用.Geek们喜欢用代码构建UI,是因为代码是键盘敲出来的,这样可以做到不开IB,手不离开键盘就完成工作,可以专注于编码环境,看起来很cool很高效,而且不到运行时大家都不知道会是什么样子,也显出了程序员这一职业的高大上及神秘气息(这个真的不是在黑..想想大家一起在设计师背后指点江山的场景吧).大型多人合作项目使用代码构建UI,主要是看中纯代码在版本管理时的优势,检查追踪改动以及进行代码合并相对容易一些. 另外,代码UI可

深入理解UIApplication和ios程序启动过程

在深入理解UIApplication前我们先了解ios程序的启动过程: UIApplication类在ios里面为app的管理和协调提供一个集中的点,每一个app有一个UIApplication的实例,当app启动时,系统会调用main函数里面的UIApplicationMain函数,该函数会创建一个UIApplication的实例,设置run loop,启动info.plist里面指定的main.storyboard,加载UIview.

**IOS:xib文件解析(xib和storyboard的比较,一个轻量级一个重量级)

使用Xcode做iOS项目,经常会和Xib文件打交道,因为Xib文件直观的展现出运行时视图的外观,所以上手非常容易,使用也很方便,但对于从未用纯代码写过视图的童鞋,多数对Xib的理解有些片面. Xib文件是什么? A nib file describes the visual elements of your application’s user interface, including windows, views, controls, and many others. It can also

IOS基础UI之(三)手写UI和storyboard方式实现图片移动和缩放

手写UI是最早进行UI界面布局的方法,优点是灵活自由,缺点是使代码看起来比较长.平时学习的时候可以多尝试手写ui,这样会更深入熟悉控件.storyboard开发效率相对比较高.实际开发中看情况而定!! 下面用这两种方式分别实现图片移动和缩放. 功能描述: 1. 界面布局 2.点击相应的按钮,对显示的图片移动.缩放. 效果如下:    掌握点: 一:熟悉代码的描述UIButton属性 1.UIButton状态 UIControlStateNormal          // 正常状态 UICont

iOS中xib与storyboard原理,与Android界面布局的异同

用文本标记语言来进行布局,用的最多的应该是HTML语言.HTML可以理解为有一组特殊标记的XML语言. 一.iOS中xib与storyboard显示原理 在iOS中主要的布置界面的方式有3种:代码,xib,storyboard. 1. 代码 代码布置界面是万能的,但通常很复杂.布置一个简单的界面可能需要很多行代码,因此十分繁琐. 下面为创建一个按钮的代码,最少也要3行: UIButton *btn = [UIButton buttonWithType:UIButtonTypeContactAdd

使用storyboard实现页面跳转,简单的数据传递

在storyboard中,界面的跳转是通过segue来实现的,利用它,省去了方法内写入跳转的代码. 一 视图跳转 <StoryBoard下的视图跳转> 我们知道:segue共有三种类型:push,modal,和custom.如下图://01 简单说下这三个的作用:使用导航栏压进新的控制器(push),模态的加载视图控制器(modal),自定义(custom). 好了,废话少说,现在开始我们的旅行. 1,首先建立一个Single View 模板的项目,记得勾选上storyboard.然后打开它,

Storyboard 全解析

XCode 4.3.2 新功能 - Storyboard 最近开始比较有空在玩 XCode 4.3.2,赫然发现它多了个 Storyboard 的东东. Storyboard 这个东西一般来说是在做创意发想的时候,用来将自己的想的一些故事情节画成像是连环漫画一样,想不到 Apple 把它用在这里,真是佩服... 好吧,不废话,先来说说这个 Storyboard 带来什么改变? 在这个版本前,我们在设计画面的时候都是用 interface builder 产生一个 xib 档,然后在 code 要