如何以编程方式将UI元素添加到现有的nib文件中

时间:2012-02-07 11:25:58

标签: objective-c ios uiview

我想知道如何以编程方式将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文件中?

3 个答案:

答案 0 :(得分:2)

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

来自Apple文档。

  

在视图控制器加载它之后调用此方法   相关视图到内存中。无论如何调用此方法   视图是存储在nib文件中还是已创建   以编程方式在loadView方法中。这种方法最常见   用于对视图执行其他初始化步骤   从nib文件加载。

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

- (void)viewDidLoad
{
   [super viewDidLoad];

   // your other views here

   // call addSubview method on self.view
}

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

相反,关于loadView方法

  

如果您覆盖此方法以手动创建视图,   您应该这样做并将层次结构的根视图分配给   查看属性。 (您创建的视图应该是唯一的实例和   不应与任何其他视图控制器对象共享。)   这种方法的自定义实现不应该调用super。

一个例子可能是:

- (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 :(得分:1)

内部viewDidLoad

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

答案 2 :(得分:1)

AFAIK,无法以编程方式修改nib文件。

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