IBDesignable UIViewController

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

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

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

Спасибо за любые предложения.


person Jeff Ames    schedule 06.11.2014    source источник


Ответы (2)


Я нашел обходной путь для проверки макета контроллера представления с помощью IBDesignable.

1. Разместите свой контроллер представления в коде, как обычно.

2. Создайте подкласс IBDesignable UIView и добавьте представление контроллера представления в качестве подпредставления.

3. Создайте xib и установите класс его представления на подкласс, который вы создали на шаге 2.

Чтобы уточнить шаг 2, метод initWithFrame: вашего IBDesignable может выглядеть так:

{
    self = [super initWithFrame:frame];
    MyViewController *viewController = [MyViewController alloc] init];
    viewController.view.frame = self.bounds;
    [self addSubview:viewController.view];
    return self;
}

Таким образом, помимо этого метода initWithFrame, весь ваш код макета может обрабатываться вашим контроллером представления. Вы можете захотеть передать данные вашему контроллеру представления в методе prepareForInterfaceBuilder вашего подпредставления.

person Jeff Ames    schedule 14.12.2015

Чтобы разместить свои собственные классы в Xcode, вам нужно сначала импортировать их на свою быструю игровую площадку: -own-project-into-a-playground?lq=1">здесь дополнительная информация.

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

Вот краткий пример с WWDC:

Реализуя этот протокол, вы, по сути, сообщаете игровой площадке, как представлять свой класс. Я еще не нашел лучшего решения.

person Max_Power89    schedule 13.06.2015