ViewController的作用

ViewController与XIB一一对应,用于分离独立出可重用组件单元,如单个组件、复合组件、界面片段、整个界面等。
通常继承 UIViewController 获取相关生命周期方法,以合适的时机初始化其各个组件。
通过不同的ViewController加载方式决定其作为其他界面的组成部分或作为独立界面展示。

ViewController与Cell中的outlet绑定

XIB的File’s Owner属性中Custom Class一般用于绑定Controller类型的类,以管理整个XIB的所有控件。
当前XIB作为独立界面整体或可重用界面一部分(Android中的Fragment概念)时,outlet应绑定到该Controller类上,绑定关系出现在File’s Owner的链接检查页面中,此后Controller类对象将代理接管被注入的outlet控件。
通过loadNibNamed等方式初始化一个XIB视图时,outlet绑定的控件通过owner参数注入目标Controller类对象中。

作为Cell的XIB,应该将视图树的根节点(Cell类型的View)的Custom Class属性指向自定义的Cell实现类,File’s Owner的Custom Class保持为空(NSObject)。
控件outlet绑定到自定义Cell实现类中,绑定关系出现在根节点的CellView上而非File’s Owner上。
此后在Cell视图被实例化时,将绑定的outlet控件自动注入到当前实例对象中自行管理。
通过dequeueReusableCellWithIdentifier获取一个Cell视图时,outlet绑定的控件自动注入到Cell指定的实现类对象中。

若File’s Owner指定了Custom Class,则outlet会自动转接绑定在File’s Owner的指向类上,初始化Cell时将抛出this class is not key value coding-compliant for the key collection cell..错误。

ViewController与outlet绑定的更多相关文章

  1. QFramework 使用指南 2020 (四):脚本生成(2)ViewController 与 ViewController 嵌套绑定

    在上一篇,我们学习了,脚本生成的基本使用. 在这一篇,我们试着深入,聊聊脚本生成给我们带来的便利. 脚本生成的便利 首先,我们要知道,在 Unity 的游戏世界中都是以 GameObject 为单位的 ...

  2. NSInternalInconsistencyException: loaded the "XXXView" nib but the view outlet was not set

    运行过程中App崩溃,报错如标题. 原因: viewController的view没有绑定xib的view. 解决方法: 在File's Owner中将view与viewController的view ...

  3. 浅谈MVC和MVVM模式

    MVC I’m dating with a model… and a view, and a controller. 众所周知,MVC 是开发客户端最经典的设计模式,iOS 开发也不例外,但是 MVC ...

  4. MVC、MVVM

    一.MVC 所谓的 MVC 是指: Model: 数据的拥有者,实现具体的业务逻辑. View: 具体的用户界面,如按钮.列表.图片. Controller: 负责将 View 中用户的动作传达给 M ...

  5. iOS-技术细节整理

    遇到未使用类,可以看看xcode->help->developer documentation 下面做一下简单的技术细节整理 Auto Layout使用Auto Layout来灵活改变UI ...

  6. iOS开发技巧

    一.寻找最近公共View 我们将一个路径中的所有点先放进 NSSet 中.因为 NSSet 的内部实现是一个 hash 表,所以查找元素的时间复杂度变成了 O(1),我们一共有 N 个节点,所以总时间 ...

  7. 【转】iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

    1. 应用间相互跳转简介 在iOS开发的过程中,我们经常会遇到需要从一个应用程序A跳转到另一个应用程序B的场景.这就需要我们掌握iOS应用程序之间的相互跳转知识. 下面来看看我们在开发过程中遇到的应用 ...

  8. ExtJS5搭建MVVM框架

    概述 · ExtJs5能够搭建Js的MVC框架,通过配置路由能够通过左边树形菜单导航到所需的页面,效果如下: 搭建JS框架 新建home.htm页面作为ExtJs加载的主体页面,页面引入ExtJs需要 ...

  9. iOS: 动态更改 backBarButtonItem 的 title

    先来看一下 UIBarItem 的 title 的描述 The title displayed on the item. You should set this property before add ...

随机推荐

  1. select_tag in rails about selected not change and onchange()

    make it more easy after http://www.cnblogs.com/juandx/p/4058399.html 1  if you want the selected is ...

  2. JavaScript Patterns 4.5 Immediate Functions

    The immediate function pattern is a syntax that enables you to execute a function as soon as it is d ...

  3. MongoDB学习笔记——数据库操作

    使用use数据库名称来创建数据库,如果该数据库已经存在则返回这个数据库 语句格式:use DATABASE_NAME >use mynewdb switched to db mynewdb 使用 ...

  4. Sql Server 高频,高并发访问中的键查找死锁解析

    死锁对于DBA或是数据库开发人员而言并不陌生,它的引发多种多样,一般而言,数据库应用的开发者在设计时都会有一定的考量进而尽量避免死锁的产生.但有时因为一些特殊应用场景如高频查询,高并发查询下由于数据库 ...

  5. JS生成UUID的方法实例

    <!DOCTYPE html> <html> <head> <script src="http://libs.baidu.com/jquery/1. ...

  6. 烂泥: KVM虚拟机Linux系统增加硬盘

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. Linux虚拟机在使用过程中,硬盘空间不够使用.由于前期没有做LVM,所以只能手动添加新的硬盘. 给虚拟机添加硬盘有两种方法: 1.通过virsh at ...

  7. C语言杂谈(二)自增运算符++与间接访问运算符*的结合关系和应用模式

    自增运算符++有前缀和后缀两种,在搭配间接访问运算符*时,因为顺序.括号和结合关系的影响,很容易让人产生误解,产生错误的结果,这篇文章来详细分析一下这几种运算符的不同搭配情况. ++.--和*的优先级 ...

  8. linux alarm函数解除read write等函数的阻塞

    看到apue的第十章,说到alarm,pause可以实现sleep,可以让某些一直阻塞的函数超时,例如read,write.代码如下: static void sig_alrm(int signo) ...

  9. linux内核宏container_of前期准备之gcc扩展关键字typeof

    typeof基本介绍 typeof(x) 这是它的使用方法,x可以是数据类型或者表达式.它的作用时期和sizeof类似,就是它是在编译器从高级语言(如C语言)翻译成汇编语言时起作用,这个很重要,稍后会 ...

  10. xargs -n1 -t

    杀掉删除没有释放空间的进程 可以用如下命令,当然也可以写一个循环,不过这一条命令比循环简单 lsof  |grep  deleted  |awk '{print $2}' |xargs  -n1 -t ...