2012-03-07 4 views
0

Я пытаюсь загрузить файл xib из моего UIViewController.Cant load xib файл от UIViewController

В .h

UIView *myView; 

@property(nonatomic, retain) IBOutlet UIView *myView; 

В моей .m

@synthesize myView; 

if([[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]) { 
      [self.myView setFrame:CGRectMake(0, 0, 320, 480)]; 

      [[UIApplication sharedApplication].keyWindow addSubview:self.myView]; 

} 

Из той же UIViewController я загрузить и удалить файлы XIb. Я использовал тот же код в приведенных выше случаях, и он сработал. Это один конкретный xib-файл, который, похоже, имеет проблему. Я проверил, нет ли окна. Но его нет. Не могу понять, в чем проблема.

Edit: Возможно ли, что self становится выпущен преждевременно

Перед загрузкой этого файла XIb я использую тот же код, чтобы загрузить другой файл XIb. И это прекрасно работает. Я пытаюсь загрузить текущий файл xib над этим представлением.

+1

Вы проверили имя xib? Иногда мы пропускаем мелкие вещи, вызывающие большие проблемы! – cocoakomali

+0

Я сделал это правильно –

+0

Вы проверили свое обязательство в IB? – Geoffroy

ответ

1

Попробуйте это:

if([[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]) { 
      [self.myView setFrame:CGRectMake(0, 0, 320, 480)]; 

      [[UIApplication sharedApplication].keyWindow addSubview:self.myView]; 

} 

Я думаю, что проблема может быть, что «loadNibNamed» возвращает NSArray объектов верхнего уровня.

0

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

+0

Это не имеет никакого отношения к вопросу. – jrturton

+0

Но это работает –

+0

Но это, кажется, не ответ, хотя его работа хорошая в моем случае. –

1

Возможно, убедитесь, что ваш xib-файл был добавлен в раздел «Ресурсы копирования ресурсов» цели в разделе «Сборка фаз». (И дважды проверьте, что он был добавлен в ресурсы меню навигации).