0

这应该是一个非常简单的解决方法,但我还没有从阅读 Apple 文档或其他 SO 问题中弄清楚如何从以编程方式创建我的界面到使用界面生成器进行这个简单的切换。

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

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

谢谢您的帮助。

4

1 回答 1

0

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

initWithNibName:bundle:

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

出口:这就是你如何教导一个对象关于另一个对象的存在。例如,您可能有一个需要访问按钮的控制器对象。您在控制器中创建一个插座(在 controller.h 文件/属性区域中的 XCode Text Edit 中或在 IB 中通过添加插座),然后从插座中按住 control-click-drag 拖动到按钮。

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

 - (IBAction) someMethod:(id) sender;

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

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

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

于 2010-03-31T21:46:57.587 回答