Загрузка UIView из файла пера без догадок

Хорошо, вот еще вопрос.

Я создаю UIView под названием ProgressView , который является полупрозрачным представлением с индикатором активности и индикатор выполнения.

Я хочу иметь возможность использовать это представление в различных контроллерах представления в моем приложении, когда это необходимо.

Я знаю 3 разных способа сделать это (но меня интересует только один):

1) Создавать все представление программно, создавать экземпляры и настраивать по мере необходимости. Не беспокойтесь, я его получу.

2) Создайте UIView в построителе интерфейса, добавьте необходимые объекты и загрузите его, используя метод, подобный приведенному ниже. Проблема в том, что мы в основном предполагаем, что представление - это objectAtIndex: 0, потому что нигде в документации я не нашел ссылки на порядок элементов, возвращаемых функцией [[NSBundle mainBundle] loadNibName: .

NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"yournib" 
                                                 owner:self 
                                               options:nil];
UIView *myView = [nibContents objectAtIndex:0];
myView.frame = CGRectMake(0,0,300,400); //or whatever coordinates you need
[scrollview addSubview:myView];

3) Создайте подкласс UIViewController и позвольте ему управлять представлением как обычно. В этом случае я бы никогда не поместил контроллер представления в стек, а только его основное представление:

ProgressViewController *vc = [[ProgressViewController alloc] initWithNibName:@"ProgressView" bundle:nil];
[vc.view setCenter:CGPointMake(self.view.center.x, self.view.center.y)];
[self.view addSubview:vc.view];
[vc release];

Насколько я могу судить, # 3 - это правильный способ сделать это (кроме программного), но я не совсем уверен, безопасно ли выпустить контроллер представления ProgressView, в то время как представление другого контроллера сохраняет свое основное представление (внутреннее чувство говорит, что оно будет протекать? )?

Что мне делать с точки зрения управления памятью в этом случае, где и когда мне следует выпустить контроллер представления ProgressView?

Заранее спасибо за ваши мысли.

Ура,

Rog

]
7
задан Rog 24 March 2011 в 02:00
поделиться