Подтвердить что ты не робот

Добавить subview из xib или другой сцены с раскадрой

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

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

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

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

4b9b3361

Ответ 1

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

  • Создайте файл .xib. Например: MyView.xib
  • Создайте класс objective-c. Например: MyViewClass.h и MyViewClass.m
  • Установите в качестве владельца файла .xib файл.
  • Добавьте элемент UIView в раскадровку и установите собственный класс в имя класса objective-c (MyViewClass).
  • Ключевым моментом является переопределение метода 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.

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

Ответ 2

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