2012-02-07 47 views
2

我想知道如何以编程方式将UI元素添加到现有的nib文件。如何以编程方式将UI元素添加到现有的nib文件

如果我在loadView方法中以编程方式创建视图并添加如下代码,则标签将正确显示。

self.view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; 

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0,2,150,100)]; 

[self.view addView:lbl]; 

但如何将标签添加到现有的nib文件?

+1

你需要使用'viewDidLoad',它在视图加载完成后调用(来自'nib')。如果您在代码中完全设置视图,则只能使用'loadView'方法。 – 2012-02-07 11:30:56

回答

2

正如Paul.s所指出的,您需要在viewDidLoad方法中执行您的自定义代码。

从Apple文档。

该视图控制器已将其关联视图加载到内存后调用此方法。不管 是否将视图存储在nib文件中,或者在loadView方法中以编程方式创建 ,都会调用此方法。此方法通常用于对从nib文件加载的视图执行其他初始化步骤 。

所以,在你的控制器,你可以这样做:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // your other views here 

    // call addSubview method on self.view 
} 

你为什么要这么做?因为在这里您确定视图已经加载到内存中并且插座已正确设置。

相反,约loadView方法

如果重写此方法,以手动创建你的意见,你 应该这样做并分配层次的根视图到 视图属性。 (您创建的视图应该是唯一的实例,并且不应该与其他视图控制器对象共享 )。

一个例子可以是:

- (void)loadView 
{ 
    CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; 
    UIView *contentView = [[UIView alloc] initWithFrame:applicationFrame]; 
    contentView.backgroundColor = [UIColor whiteColor]; 

    self.view = contentView; 

    // call addSubview method on self.view 
} 

我建议你阅读View Controller Programming Guide for iOS

希望它有帮助。

1

viewDidLoad

UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0,2,150,100)]; 
[self.view addSubView:lbl]; 
1

据我所知,以编程方式修改笔尖文件是不可能的。

您可以将视图添加到UIViewController方法的viewDidLoad中。

相关问题