0

(使用 IOS 6、XCode 4.6、ARC、Storyboard)

我正在尝试创建一个可重用的UIView(如 C# 中的用户控件),因为我有两个 viewControllers 具有相同的数据,一个用于输入,另一个用于显示。

我在这里读到,这样做的方法是为 ReusableUIView 创建一个单独的 xib 文件,并为其创建相应的 h + m 文件。添加所有控件并将出口链接到它们。

在我的故事板中UIViewControllerviewDidLoad我写了以下代码:

NSArray *myNibsArray = [[NSBundle mainBundle] loadNibNamed:@"ReusableUIView" owner:self options:nil];
ReusableUIView *myCustomView = [myNibsArray objectAtIndex:0];

几个问题:

  1. 此时没有任何反应,所以我猜我必须以某种方式将 self(UIViewController)与 myCustomView 连接起来
  2. ReusableUIView 是 UIViewController 中的众多控件之一,我该如何设置它的位置
  3. 在 xib 文件中,我找不到设置 UIView 大小的方法,以及我们在何处以及何时设置它的大小
4

1 回答 1

0
  1. 最好自定义视图加载它的类本身 - 在您的自定义视图类中添加一些静态方法,如下所示:

    '+' (ReusableUIView *) loadView {

    ReusableUIView *loadedView = nil;

    NSArray *nibs = [[NSBundle mainBundle] loadNibNamed:@"ReusableUIView" owner:self options:nil];

    if ([nibs count] > 0) {

    加载视图 = [myNibsArray objectAtIndex:0];

    }

    返回加载的视图;

    }

  2. 由于 ReusableUIView 继承 UIView ,您可以使用 frame 属性轻松配置其大小和位置,并将其添加为父视图的子视图。

  3. 我不确定是什么问题,但您可以轻松更改 xib 中的视图大小。

另外,请注意两点:

  1. 当您从 nib 加载视图时- (id) initWithCoder(NSCoder * )aDecoder构造方法被调用。因此,如果您需要任何其他设置 - 您必须在此方法中实现 then。
  2. 当您使用 xib 和 .h/.m 文件制作自定义视图时,您必须在 xib 中标记您的自定义类,而不是在文件所有者上,而是直接在您的 UIView 上。
于 2013-04-14T22:08:41.883 回答