2013-08-03 2 views
0

Я просто хочу загрузить пользовательский вид (с помощью xib) на доске xib или stroy viewcontoller. Какова наилучшая практика сделать то же самое.Как загрузить пользовательский вид с помощью xib на xib или раскадровке

Я использовал код функции awakeAfterUsingCoder ниже.

(id) awakeAfterUsingCoder:(NSCoder*)aDecoder 
{ 
    BOOL theThingThatGotLoadedWasJustAPlaceholder = ([[self subviews] count] == 0); 
    if (theThingThatGotLoadedWasJustAPlaceholder) 
    { 
     CustomView* theRealThing = (id) [CustomView view]; 
     theRealThing.frame = self.frame; 
     theRealThing.autoresizingMask = self.autoresizingMask; 
     return theRealThing; 
    } 
    return self; 
} 

но после использования этой функции мой awakeFromNib начал вызывать несколько раз.

Please sugegst.

ответ

0

Правильный ответ в настоящее время связан с чрезмерно сложным и ошибочным, как вы выяснили. Существует гораздо больше стандартного и лучший способ сделать это:

  1. Создание пустой XIB
  2. Добавить UIView к вашему XIB, так что это единственный объект верхнего уровня (кроме прокси-первых Ответчика и файла Владелец)
  3. Изменить класс вашего нового UIView к CustomView
  4. Инстанцировать в XIB и получить свой экземпляр CustomView так:

    CustomView * вид = [[UINib nibWithNibName: @ "CustomView" расслоение: ноль ] instantiateWithOwner: self opti Дополнения: ноль] [0];

  5. Добавьте его в иерархию представления в методе viewDidLoad ваш взгляд контроллера:

    [self.view addSubview: обзор];

Обязательно переопределить -initWithCoder: в вашем CustomView подклассу в случае, если вам нужно сделать какой-либо пользовательской инициализации. Я знаю, что это много, поэтому, пожалуйста, дайте мне знать о том, будут ли эти шаги путать вас или если вы застрянете.