我可以使用Interface Builder将nib内容加载到UIView吗?

问题描述:

有没有人知道在故事板中从另一个笔尖加载UIView内容的方法?我知道我可以用代码很容易地做到这一点,但我想弄清楚如何在IB中做更多。我可以使用Interface Builder将nib内容加载到UIView吗?

我有一个主界面布局的故事板,我有一个UIScrollView,我想在IB中设计它的内容。我可以想出如何做到这一点的唯一方法是设计它自己的.nib中的UIView,但接下来我的问题是,如何加载笔尖而不编写它来做到这一点?这甚至有可能吗?它似乎并没有太多牵扯到我。

我假设你只是想在IB中布置你的UIScrollView,提到.nib是因为这是一种你正在探索的方法,但是如果你可以在你的故事板中严格执行这个方法,不可取:

  1. 首先,在Xcode中创建一个新的文件,它是UIScrollView的子类。

  2. 在您的故事板中,将UIScrollView拖出到您要显示此滚动视图的场景(视图控制器)。

  3. 在标识检查器中,将UIScrollView的自定义类设置为UIScrollView的子类。

  4. 通过CTRL +拖动的UIScrollView转化成其显示在视图控制器子类的.h文件中这一UIScrollView中创建一个出口。把它命名为像myScrollView

  5. 在你的ViewController的-viewDidLoad方法,设置contentSize将UIScrollView的属性设置为您希望的大小。所以它看起来像这样:

    self.myScrollView.contentSize = CGSizeMake(800,800);

  6. 现在,将UI对象拖出到您的UIScrollView并进行设计。

  7. 重要:要创建网点,这些对象是有点棘手。假设你已经拖出了一个UILabel。您需要手动进入你的UIScrollView子类,并添加到.H

    @属性(非原子,弱)IBOutlet中的UILabel * myLabel;

并向.M

@synthesize myLabel = _myLabel; 
  1. 现在你需要得到你的故事板和Ctrl +拖累滚动视图一起到标签来创建自己的屏幕大纲视图出口。这与你习惯的相反。

  2. 现在,您可以从viewcontroller或scrollview子类中引用该插座。例如,在viewcontroller -viewDidLoad中,你可以说:

    self.scrollView.myLabel.text = @“Hello World”;

HTH!

在IB中添加一个通用UIView,将其自定义类设置为您的nib文件的名称。

将GradientControl替换为您的nib文件的名称(减去'.xib')。 screenshot

+0

我在Interface Builder中不断收到错误,未知的类。 – Weston 2012-07-28 15:47:22

+0

我想你需要添加一个UIView类或者一个UIViewController。如果使用XCode接口添加它,并选中“.nib文件接口”复选框,则添加通用UIViewController而不是通用UIView,并将名称更改为该名称的自定义类名称。那样有用吗? – 2012-07-28 19:27:13

+0

如果我将视图控制器更改为笔尖,那么它可以工作,但我试图以这种方式设置滚动视图的内容,难道不可能吗? – Weston 2012-07-29 13:34:44

如果你想要在IB的滚动视图内编辑,这是一个痛苦,但是可行的。 看看my answer关于this question