来自NIB的初始化视图

时间:2013-06-14 02:32:02

标签: ios xcode uiview interface-builder

我正在尝试将NIB文件中的视图初始化到Storyboard上的视图控制器上。

这是我做的:

  1. 将视图控制器拖到故事板上,将UIView obj放置为占位符视图,并将其类更改为名为“CustomControl”的自定义视图类。

  2. 接下来我从NIB文件设置CustomControl类,连接其子视图的出口等等。

  3. 我的问题是如何将这个CustomControl视图从nib加载到我在视图控制器上的占位符视图?我想用nib文件单独执行此操作的原因是因为我可能希望将此控件(自定义UIView类)与其他项目一起使用,而且我认为如果我可以在视图控制器和视图控制器之间设置视图约束会更容易。占位符视图无需过多担心控件对视图控制器的约束。

    提前感谢!

2 个答案:

答案 0 :(得分:0)

将它全部放在故事板上。

没有占位符,没有任何东西。当另一个控制器想要加载此视图控制器时,它可以使用[[MyViewController alloc] init][[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]。创建视图控制器后,它可以将其推送到导航控制器上,将其分配到选项卡,或者将其弹出为呈现的视图控制器。

你失去了做segue的能力,但你实际上并不需要它们。

答案 1 :(得分:0)

有一个包装器视图控制器。

不要将非故事板视图控制器放在故事板中,而是将故障板视图控制器放在故事板中。

包装器视图控制器实例化非故事板视图控制器。然后包装器将非故事板添加为子视图控制器(-addChildViewController:)。最后,包装器的视图将非故事板的视图添加为子视图。

- (void)viewDidLoad
{
    …
    MyViewController *child = [[MyViewController alloc] init];
    [self addChildViewController:child];
    [self.view addSubview:child.view];
    …
}