2012-02-07 2 views
2

Мне интересно, как добавить элементы пользовательского интерфейса программно к существующим файлам nib.Как добавить элементы пользовательского интерфейса программно к существующим файлам 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, если вы полностью настраиваете свой код в коде. –

ответ

2

Как указал Павел., вам необходимо выполнить свой код в 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

AFAIK, чтобы изменить острия файл программно невозможно.

Вы можете добавить в viewDidLoad метод UIViewController.