Добавить подпредставление из xib или другой сцены с раскадровкой - PullRequest
20 голосов
/ 06 января 2012

Я новичок в iOS и Xcode. Я не могу понять, как спроектировать отдельное представление и добавить его в основной UIViewController с помощью раскадровки.

Я делал разные подходы ..

  1. Просто возьмите объект пользовательского интерфейса из правого нижнего углового окна в xcode, а затем поместите его в любую область раскадровки. Но я не могу отбросить объект пользовательского интерфейса, как в случае с xib.
  2. Добавить новый UIViewController. Добавьте представление в UIViewController. В основном ViewController.m я получаю новый экземпляр UIViewController в viewDidLoad, а затем [self.view addSubview:newUIViewController.view]. Но я не вижу добавленный вид.
  3. Я создал новый файл XIB. И добавить взгляд на это. Я также пытаюсь получить экземпляр в основном ViewController. И addSubview с точки зрения Ксиба. Но это также не удалось.

Есть ли правильный способ или какое-либо рабочее решение для этого?

Ответы [ 2 ]

36 голосов
/ 12 июля 2012

Я нашел способ сделать это.Описывается следующим образом:

  1. Создайте файл .xib.Например: MyView.xib
  2. Создать классjective-c.Например: MyViewClass.h и MyViewClass.m
  3. Установите в качестве владельца файла .xib класс.
  4. Добавьте элемент UIView на раскадровку и задайте пользовательский класс для класса target-c.name (MyViewClass).
  5. Ключевым моментом является переопределение метода initWithCoder в классе object-c.

    - (id)initWithCoder:(NSCoder *)aDecoder {
        if ((self = [super initWithCoder:aDecoder])) {
            [self addSubview:[[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil] objectAtIndex:0]];
        }
        return self;
    }
    

Идея состоит в том, что пользовательский класс загружается раскадровкой, и вызывается initWithCode.Индекс 0 является корневым представлением в конструкторе интерфейса .xib.

Это сложно, но работает.

0 голосов
/ 06 января 2012

В раскадровке перетащите контроллер представления.Контроллер просмотра поставляется с основным видом.Выберите этот основной вид, щелкнув за пределами добавленного контроллера представления, а затем щелкнув по центру.Теперь просто перетащите uiview или что-то еще в этот основной вид, как вы делали с IB.

...