使用故事板从xib或其他场景添加子视图

时间:2012-01-06 06:18:12

标签: ios view storyboard

我是iOS和Xcode的新手。 我无法弄清楚如何设计一个单独的视图,并使用故事板将其添加到主UIViewController中。

我做了不同的方法..

  1. 只需从xcode中的右下角窗口抓取一个UI对象,然后将其放在故事板的任何空间区域。但是我不能像使用xib那样删除UI对象。
  2. 添加一个新的UIViewController。将视图添加到UIViewController。在ViewController.m主中,我在viewDidLoad中获取了新的UIViewController实例,然后是[self.view addSubview:newUIViewController.view]。但是我看不到添加的视图。
  3. 我创建了一个新的xib文件。并添加一个视图。我还尝试在主ViewController中获取实例。并且addSubview使用xib的视图。但它也失败了。
  4. 是否有正确的方法或任何可行的解决方案?

2 个答案:

答案 0 :(得分:36)

我想出了办法。 描述如下:

  1. 创建.xib文件。例如:MyView.xib
  2. 创建一个objective-c类。例如:MyViewClass.h和MyViewClass.m
  3. 将.xib文件的所有者设置为类。
  4. 在情节提要板上添加UIView元素,并将自定义类设置为objective-c类名(MyViewClass)。
  5. 关键点是覆盖object-c类中的 initWithCoder 方法。

    - (id)initWithCoder:(NSCoder *)aDecoder {
        if ((self = [super initWithCoder:aDecoder])) {
            [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]];
        }
        return self;
    }
    
  6. 这个想法是故事板加载自定义类并调用initWithCode。 索引0是.xib接口构建器中的根视图。

    这有点棘手,但确实有效。

答案 1 :(得分:0)

在故事板中,拖放视图控制器。视图控制器带有主视图。通过单击添加的视图控制器的外部,然后单击其中心,选择该主视图。现在,只需将uiview或其他内容拖到主视图中,就像使用IB一样。