在一个XIB中定义视图布局,在另一个XIB中定义视图本身

时间:2010-01-30 22:28:41

标签: iphone objective-c user-interface interface-builder

我有一个带控制器的主视图和两个带有自己的xib的独立视图控制器。

类似

@interface MainViewController : UIViewController
{
    FirstViewController* firstController;
    SecondViewController* secondController;
}

我想拥有FirstViewController.xib和SecondViewController.xib,以便我可以在那里放置任何我想要的东西。

现在在MainViewController.xib中我希望能够为FirstViewController和SecondViewController定义帧。

唯一的方法是进入MainViewController的viewDidLoad方法并手动将控制器的相应视图添加为子视图?但是,我如何定义尺寸???

1 个答案:

答案 0 :(得分:2)

要记住的一件事是UIViewController(及其任何子类)是Controller类(在模型 - 视图 - 控制器意义上),因此不被明确地视为视图。 UIViewController然而拥有一个视图,这就是你想要的。

你会做什么,在你的MainViewController视图中(你使用InterfaceBuilder进行布局并保存为xib文件)你可以创建两个临时虚拟UIView作为占位符,以及在MainViewController类中为它们添加插座。在IB中连接这些插座。您还需要在MainViewController标头中保留First和SecondViewController的实例变量(这不是明确需要的,但您可能想要依赖这些人)。

然后,在-viewDidLoad的{​​{1}}中,您将要实例化First和SecondViewController(MainViewController,同样为第二个),然后替换您的虚拟子视图(您的那些)在IB中创建为占位符),如firstController = [[FirstViewController alloc] initWithNibName:@"myName.xib" bundle:nil];)。

那应该是你。您可能还想将dummyViews的autoresizingMask与控制器视图的autoresizingMask交换。