我有一个带有通用界面元素的视图控制器,需要在菜单视图中加载。我创建了一个名为MenuView.h
和MenuView.m
的自定义UIView,并使用代码在其中构建了所有视图。但是,我更愿意在.xib文件中设置视图,以便我可以更轻松地将它们布局。
我知道整个loadNibNamed
以便将nib / xib文件加载到我的自定义UIView中,但我不明白的是我如何将一些IBOutlet连接到加载的笔尖。
有人有任何关于如何做到这一点的指示吗?
答案 0 :(得分:3)
要做到这一点:
UIViewContoller
子类 - 尽管在iOs5,Apple之前在屏幕上有多个控制器时,不建议使用UIViewController
。 (此步骤是在xib中显示此类,以便您可以创建插座)。IBOutlet/IBAction
。loadNibNamed:owner:option:
时,请将所有者作为此课程的对象。即
UIView *view = [[[NSBundle mainBundle] loadNibNamed:@"CustomXib" owner:<customClassobject> option:nil] objectAtIndex:0];
并在某处使用它:
[someView addSubview:view]
另一种方法是创建自定义视图控制器并使用视图控制器访问视图。
然后,不是使用loadNibNamed...
,而是初始化视图控制器。即
MyViewCon *myVC = [[MyViewCon alloc] initWithNibName:@"CustomXib"];
然后,无论您何时使用视图,都使用myVC.view
。例如,
[someview addSubview: myVC.view];
<强>更新强>:
如果您使用与文件的所有者相同的UIViewController
子类作为子视图和父视图,您应该意识到它将是同一类的两个不同对象,并且可能会导致混淆,因为在同一场景中执行操作时,同一变量可能会显示不同的值。
有关场景的多个控制器的设计观点的更多信息,请参阅here。