xib文件中的iOS自定义视图

KTa*_*Tas 10 iphone ipad ios ios5

我通常以编程方式创建自定义视图,并使用自定义初始化方法(例如initWithFrame:SomeParam:OtherParam)以编程方式初始化它们.是否可以将这些自定义视图与xib文件结合使用?也就是说,拥有一个包含各种自定义视图的父xib文件作为子视图,这些子视图可能需要使用不同的init方法?

jrt*_*ton 10

如果将自定义视图添加到xib文件中,则无法使用自定义初始化程序.它们都将使用初始化initWithCoder.

通常,您可以使用从那里调用的常用方法进行任何设置awakeFromNib.

如果您需要在视图上设置源自外部的任何自定义属性,请在viewDidLoad视图控制器中执行此操作.


Ish*_*ank 6

获取视图的xib以常规方式初始化并使用引用执行自定义设置.这部分可以放在这样的init方法中 -

     -(void)initfunction{
        UIView *containerView = [[[NSBundle mainBundle] loadNibNamed:@"myView"  owner:self    options:nil] lastObject];
       containerView.property1 = xyz;//Customization
       containerView.property2= abc;//Customization
       containerView.frame = CGRectMake(x,y,z,p);//Customization
       [rootView addSubview:containerView];


   }
Run Code Online (Sandbox Code Playgroud)

关键是当我们使用xib时我们没有显式初始化,xib实用程序函数返回一个初始化对象(of UIView),在获取UIView对象后,他/她可以使用初始化对象作为常规对象进行进一步的自定义更改.