随着我将越来越多的UI构建从XCode移动到IB,我还需要解决一个障碍。

目前,我使用自定义初始值设定项在XCode中创建自定义viewControllers。它们通常有一堆ivars,在初始化期间通过传递的参数设置。我真的想尽可能多地将这一点转移到IB。

有人可以仔细向我解释 - 或者,更好的是,请指出代码 - 如何复制通过IB中的自定义初始化程序传递params的XCode方法 - 可能是通过IBOutlet。

提前致谢。

干杯, 道格

更新:

一个典型的scenerio是我的AppDelegate会去网络,获取一些数据 - NSMutableData,然后传递一个对象的视图控制器 - 通常是一个TableViewController - 它被推送到navigationController的viewController堆栈上。

当选择单元格时,将分配/初始化secondViewController,并将数据的子集传递给它。第二个ViewController进入网络以获取更多数据,构建视图层次结构,将检索到的数据部分交给每个子视图,然后使用setNeedsDisplay对每个子视图进行消息处理数据。

这种分层数据传递是我想要传递给IB的。

有帮助吗?

解决方案

您仍然可以拥有自定义初始值设定项。但是,在这个初始化的内部,你将调用 - [initWithNibName:@" yourNibName"捆绑:捆绑] 。您将在“接口”构建器中连接 UIKit 相关的实例变量( UILabel UIButton 等),因此不必实例化这些对象在您的初始化程序中。您将在初始化程序中实例化和设置的其他实例变量(字符串,字典,自定义对象等)。

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

如果您需要更多信息,请与我们联系。

其他提示

假设我们有MyViewController,它扩展了UIViewController和MyViewControllerParameter,这是我们在初始化时传递给MyViewController的自定义对象之一。 MyViewController中定义了一个类型为MyViewControllerParameter的IBOutlets。我们想将MyViewController放入另一个包含视图的ParentView.xib中。 ParentView.xib由ParentViewController.m拥有并在其他地方创建。我们在XCode中双击ParentView.xib以启动Interface Builder。然后我们拖动一个“对象”。从库视图(我相信你打开库视图与Cmd + Shift + L,如果它默认不打开)到文档窗口。 (这是由Cmd + 0激活的窗口。)

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

打开身份检查器并将class属性设置为MyViewController。最后我们右键单击或控制单击(或两个手指点击,如果我们在MacbookPro上正确配置了触控板)文档窗口中的MyViewController。这将打开一个窗口,显示MyViewController中的所有IBOutlet。从MyViewControllerParameter出口旁边的小空心圆圈拖出一条线,并将其放在位于文档窗口中的MyViewControllerParameter对象上。连接这些点是使用界面构建器在对象之间设置参数的方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top