无法在Interface Builder(Xcode 5)中创build子视图的sockets连接
我知道这似乎是其他一些问题的重复,但答案不适合我。
- 我创build了一个单一的视图应用程序。
- 在故事板中,我在主视图中添加了一个子视图。
- 我在我的主视图上有一个标签,在我的子视图上有另一个标签。
- 我创build了一个UIViewtypes的类,并将其添加为子视图的自定义类。
- 我可以ctrl-drag我的标签在我的主视图到主视图控制器类。 但是,当我尝试按Ctrl-拖动我的标签在我的子视图到我的自定义类,我无法获得连接发生。
- 我甚至input了属性信息,并尝试手动build立连接无济于事。
Xcode界面生成器的最新版本已经发生了一些变化。 有人能告诉我我错过了什么吗? 这里几乎没有代码。 我只是testing试图连接sockets与自定义类的子视图。
第一个图像显示我已经设置了自定义类并添加了一个属性,但是我无法build立连接。
第二张图显示主视图标签连接在主视图的控制器中。
第三张图片显示子视图标签没有出口连接。
您可以在自定义视图子类的@interface
中手动编写IBOutlet
属性声明,并假设您已经在IB中定义了子视图的基类,那么您可以从代码中的sockets圆圈拖回到现场。
或者,正如你所指出的那样,沃伦·伯顿(Warren Burton)在他对这个问题的回答中提出了这个技巧和另外一个问题, 不能在IB中连线到子视图 。
这个问题与View Controller的File Owner有关。 它可能被设置为IOViewController,因此您只能在该.h文件中进行属性连接。
你可以做什么,是为子视图创build另一个.nib文件,并把子视图在那里。 然后在那个.nib文件中,使文件拥有者IOSubview。 物业连接将在那里工作得很好。 然后以编程方式将子视图添加到您的IOViewController。 只记得首先从bundle中加载nib文件。
这就是我所做的(在Swift中):
- 我创build了一个新的ViewController(例如类MyViewController:UIViewController {})
- 在StoryBoard中,我扩展了“场景”(即所有UI组件的树视图)并select了“MyViewController”
- 使用“身份检查器”,我分配了“MyViewController”类(与默认的UIViewController相反)
之后,我可以分配一个行动。
我怀疑Obj-C是类似的过程。
您不要在子类中创buildsockets,而是在其所在的视图控制器上创buildsockets。 您需要#import
将子类导入IDViewController.h并在那里创build一个sockets。
IDViewController.h
#import "IDSubclass.h" ... @property (strong, nonatomic) IBOutlet IDSubclass *outletName;
放大你的故事板到100%。 如果缩小,说50%,那么sockets连接将不起作用。