博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

动态添加一个XIB子控件

Posted on 2011-07-05 00:01  星尘的天空  阅读(535)  评论(0编辑  收藏  举报

Link URL:http://www.cnblogs.com/likwo/archive/2011/05/18/2050021.html

有些情况下需要动态增加一些子控件。
如果用代码直接构建子控件,就是比较麻烦。尽量少写代码。
所以想到的是用xib文件来实现UIView。
问题是UIView不能直接从xib文件构造。

可以通过写UIViewController来加载xib。但是缺点是会得到很多小的UIVIewController实例,而实际上我们又不怎么需要。

xib/nib文件可以通过NSBundle装载。得到的是一个NSArray。在xib编辑器里看到的除了File's Owner, First Responder以外的东西都在这个数组里面。通过这个东西我们可以手动装载一个UIView进来,并且,在装载的时候进行xib内容到File's Owner绑定。

通过以下步骤可以完成

1,创建一个UIViewController

2,定义你想要的事件和属性,并且指定成IBOutlet和IBAction

3,再创建一个xib文件

4,进入这个新的xib文件,编辑File's Owner,将他的类型设置成我们创建的UIViewController

5,从这时候开始UIViewController就对应了两个xib文件了,这样我们可以通过编辑器来绑定内容。

6,随便加一些按钮,绑定些内容

7,在viewDidLoad方法里加入载入子控件的代码

  1. - (void)viewDidLoad {  
  2.     [super viewDidLoad];  
  3.         NSArray* nibViews =  [[NSBundle mainBundle] loadNibNamed:@"sub" owner:self options:nil];  
  4.         UIView *subView = [nibViews objectAtIndex:0];  
  5.         [self.view addSubview:subView];  
  6. }  
 

8,执行,你会看到子控件被载入到了UIViewController的View里了。并且,在编辑器里绑定的内容都是有效的。成功动态增加了UIViewController的内容。

转http://blog.csdn.net/slavik/archive/2010/12/24/6096944.aspx