首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口生成器。如何用IB ViewControllers替换Programatic ViewControllers?

接口生成器。如何用IB ViewControllers替换Programatic ViewControllers?
EN

Stack Overflow用户
提问于 2009-10-22 00:00:55
回答 2查看 833关注 0票数 1

随着我越来越多地将我的UI构造从XCode转移到IB,还有一个我需要清除的障碍。

目前,我使用自定义初始化器在XCode中创建了我的自定义viewControllers。它们通常有一堆在初始化过程中通过传递的参数设置的ivar。我真的很想把这些东西尽可能多地转移到IB。

有人能仔细地向我解释一下--或者,更好的做法是让我参考一下代码--如何复制在IB中通过自定义初始化器传递参数的XCode方法--大概是通过IBOutlet。

提前谢谢。

干杯,道格

更新:

一个典型的场景是,我的AppDelegate将连接到网络,获取一些数据- NSMutableData,然后传递对根viewController的引用-通常是TableViewController -它被推送到navigationController的viewController堆栈上。

当选择一个单元格时,将分配/初始化一个secondViewController,并将数据的一个子集传递给它。secondViewController转到网络获取更多的数据,构建视图层次结构,将检索到的数据的位传递给每个子视图,然后每个子视图都用setNeedsDisplay发送消息来处理数据。

我希望传递给IB的这种分层数据传递是可能的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-22 00:07:40

你仍然可以拥有一个自定义的初始化器。但是,在这个已初始化的代码中,您将调用-[initWithNibName:@"yourNibName" bundle:bundle]。您将连接与UIKit相关的实例变量(UILabelUIButton等)。在接口构建器中,因此不必在初始化器中实例化这些对象。其他实例变量(字符串、字典、自定义对象等)您将在初始化器中实例化和设置。

此外,请记住,应在viewDidLoad方法中操作与UIKit相关的变量,例如设置标签文本或设置UIView的位置,因为在执行初始化器时,这些对象可能尚未完全创建。

如果你需要更多信息,请告诉我。

票数 3
EN

Stack Overflow用户

发布于 2009-10-22 01:45:19

假设我们有扩展UIViewController的MyViewController和MyViewControllerParameter,这是我们在初始化时传递给MyViewController的自定义对象之一。MyViewController中定义了一个MyViewControllerParameter类型的IBOutlets。我们希望将MyViewController放入另一个包含视图ParentView.xib中。ParentView.xib归ParentViewController.m所有,在别处创建。我们双击XCode中的ParentView.xib来启动界面生成器。然后,我们将一个“对象”从库视图(如果默认情况下不是打开的话,我相信你会用Cmd+Shift+L打开库视图)拖到文档窗口上。(这是由Cmd+0激活的窗口。)

“对象”是在库中找到的任意小部件(由纯金立方体图标标识),可以表示项目中的任何内容。将新对象放入document窗口后,键入Cmd+4以打开Indentity Inspector窗口。在顶部的文本字段中,我们可以输入视图控制器参数的名称"MyViewControllerParameter“。接下来,我们在库中找到ViewController小部件,并将其放入document窗口。我们打开属性检查器(Cmd+1)并将nib名称设置为"MyView.xib“。这应该会导致CocoaTouch使用"MyView.xib“中的定义加载MyViewController。

打开标识检查器,并将类属性设置为MyViewController。最后,我们在文档窗口中右击或控制单击(如果在MacbookPro上正确配置了触摸板,还可以用两根手指轻敲) MyViewController。这将打开一个窗口,显示MyViewController中的所有IBOutlets。从MyViewControllerParameter插座旁边的小圆圈中拖出一条线,并将其放到文档窗口中的MyViewControllerParameter对象上。连接这些点是使用接口构建器在对象之间设置参数的方式。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1601835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档