创建可重用的控件

时间:2013-04-14 21:35:37

标签: iphone uiview uiviewcontroller storyboard xib

(使用IOS 6,XCode 4.6,ARC,故事板)

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

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

在故事板中我有UIViewController,在viewDidLoad我写了以下代码:

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

几个问题:

  1. 此时没有任何反应所以我猜我必须以某种方式连接自己(UIViewController)和myCustomView
  2. ReusableUIView是UIViewController中的众多控件之一,我如何设置它的位置
  3. 在xib文件中,我无法找到设置UIView大小的方法,我们在何时何地设置它的大小

1 个答案:

答案 0 :(得分:0)

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

      

    '+'(ReusableUIView *)loadView {

         
        

    ReusableUIView * loadedView = nil;

             

    NSArray * nibs = [[NSBundle mainBundle] loadNibNamed:@“ReusableUIView”     所有者:自我选择:nil];

             

    if([nibs count]> 0){

             
          

    loadedView = [myNibsArray objectAtIndex:0];

                 

    }

        
             

    return loadedView;

      
         

    }

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

  3. 我不确定是什么问题,但您可以轻松更改xib中的视图大小。
  4. 另外,请注意两件事:

    1. 当您从nib加载视图时, - (id)initWithCoder(NSCoder * )aDecoder 构造函数方法是calles。因此,如果您需要任何其他设置 - 您必须在此方法中实现。
    2. 使用xib和.h / .m文件制作自定义视图时,必须在xib中标记自定义类,而不是直接在UIView上标记。