我对objective-c很新,似乎我的问题是如此基本,没有什么简洁的东西(我最后因阅读事物而感到困惑)。
创建.xib文件时,将其链接到控制器(通常,我认为)。同时,您可以通过在代码中定义视图来执行.xib中可以执行的操作。当我意识到拖到.xib上的大多数项目都是视图对象时,我以为我理解了它的一部分。我从那里猜到.xib只是代表视图的真实代码。那是准确的吗?还是我完全错了?我真的不知道。
答案 0 :(得分:2)
Xib文件不代表视图的真实代码,只代表视图数据的结构。每个xib(或故事板)都有足够的信息来执行以下所有操作:
但是,那里没有“真实代码”,只有元数据。 Cocoa有足够的智能来构建和连接对象,但实际的代码总是在你的.m文件中。
答案 1 :(得分:2)
视图控制器管理由许多子视图组成的视图。虽然,每个视图最多只能有一个超级视图。 (superview对于最顶层的视图是零)。这称为视图层次结构。
层次结构中的顶级视图可以使用纯代码定义,也可以使用生成xib的Interface Builder定义。
它还有助于探索视图控制器之间的关系。在一个应用程序窗口中,还可以有多个视图控制器,每个视图控制器管理自己的顶级视图。这称为视图控制器包含。一个例子是UINavigationController或tab-bar控制器。 。在更复杂的应用程序中,通常设置自己的根控制器来管理控制器层次结构的这一方面。 (例如,滑动以显示导航控制器,该控制器位于主要内容cotroller下)。
答案 2 :(得分:0)
XIB描述符合NSCoding
的任意对象,但通常用于布局视图层次结构。所以它通常是UIView
s,通常带有UIViewController
。
然而,它们纯粹是数据。没有生成代码。系统读取XIB并将对象纯粹创建为数据读取练习。
Objective-C具有完全反射的运行时 - 您可以按名称查找类作为字符串,并且可以以相同的方式调用它们上的方法,甚至不知道该方法是否确实存在。秘密编写代码的接口构建器(例如Microsoft的Visual C ++)倾向于这样做,因为他们无法通过解析数据来完全建立您所描述的内容。