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, целият ви код на оформление може да се обработва от вашия контролер за изглед. Може да искате да предадете данни към вашия контролер на изгледа в метода pripraveForInterfaceBuilder на вашия подизглед.

person Jeff Ames    schedule 14.12.2015

За да направите оформление, което притежавате, притежавате класове в Xcode, трябва първо да импортирате, след това във вашата бърза игрална площадка: тук повече информация.

След като направите това, дойде "сложната" част. За да направите вашия клас how дебъгващ и видим в детската площадка, вашият клас трябва да отговаря на протокола: CustomPlaygroundQuickLooacable:

Тук има бърз пример от WWDC:

Като внедрите този протокол, вие основно казвате на playground как да представлява вашия hown клас. Все още не съм харесал по-добро решение.

person Max_Power89    schedule 13.06.2015