从IB加载视图

时间:2010-03-31 21:14:50

标签: iphone uiview interface-builder nib

这应该是一个非常简单的解决方案,但我还没有想到从阅读Apple文档或其他SO问题如何进行这种简单的切换,从以编程方式创建我的界面到使用Interface Builder。

我的代码基于这个框架: http://www.pushplay.net/blog_detail.php?id=27

唯一的区别是,在ViewDidLoad中以编程方式创建每个View(View01.m,View02.m)时,我想要为每个视图从一个nib导入(同时仍使用此框架)(每个视图都有一个独特的IB设计)。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将IB视为对象创建者,而不是代码生成器。这确实有帮助。 IB所做的实际上是在将对象拖到桌面/视图/ XIB窗口时创建对象的实例。然后,它允许您开始从一个对象到另一个对象创建各种连接(使用鼠标上的控件拖动)。然后,通过从捆绑包中取消归档来实例化整个XIB。这是高度自动化的,在UIViewController上读取应该会让你感动。看看:

initWithNibName:bundle:

您基本上有两种类型的连接:

Outlet:这就是你如何教一个对象关于另一个对象的存在。例如,您可能有一个需要访问按钮的控制器对象。您可以在控制器中创建一个插座(在controller.h文件/属性区域的XCode文本编辑中或通过添加插座在IB中),然后按住Ctrl键并从插座拖动到按钮。

操作:这是您在一个对象上触发事件以调用另一个对象上的方法的方法。行动将有一个原型:

 - (IBAction) someMethod:(id) sender;

如果您的方法不需要指向导致事件的对象的链接,我认为“:(id)sender”是可选的。

在IB中,您可以排列对象并设置各种属性,如大小,颜色,位置,目标/操作,用户交互,文件所有者......

这将我带到文件所有者。这里的大概念。它往往是加载NIB的控制器(好的:我有一个我已经使用超过15年的自定义窗口控制器,但Apple有一个非常好的UIViewController,可以做各种各样的优点。)并充当IB中的代理。它实际上并没有在IB中实例化,但它会在您分配并请求它加载NIB时(XIB文件是通过编译过程转换为NIB文件的XML文件)