Разработка контроллера представления с несколькими xibs - PullRequest
0 голосов
/ 14 января 2012

Лучше ли использовать более одного xib в контроллере представления для адаптивного дизайна?

В настоящее время я реализую приложение, которое в значительной степени полагается на удаленный API для своих данных.Одно конкретное представление вызывает беспокойство, поскольку макет зависит от данных, возвращаемых этим API.Это либо продукт с полным обзором и ценами, либо продукт, информация о котором у нас ограничена.

Дизайн реагирует на данные.В зависимости от объема возвращаемой информации представление имеет макет, который сильно отличается от другого.Кроме того, есть довольно много элементов, которые нужно переставить в зависимости от длины текста и т. Д. Я изначально реализовал дизайн почти все в коде, но это быстро стало невозможным, поэтому я выгрузил почти все из него в xib и использовал только коддля изменения положения элементов.

Использование нескольких XIB может быть хорошим решением.Когда представление загружается, контроллер выполняет запрос API, а затем загружает новый XIB, если это необходимо.Я не уверен, какие недостатки могут быть в этом подходе.

1 Ответ

2 голосов
/ 14 января 2012

Я сейчас внедряю клиент-серверное приложение. Макет большинства представлений также зависит от данных API. В ситуации, подобной вашей, я создал несколько файлов xib (один для подробного продукта, один для ограниченного и т. Д.), И в зависимости от ответа сервера я выбираю xib для загрузки. Пример кода:

    // load proper view from nib
    NSArray *nibViews;
    if(product.details) {
        nibViews = [[NSBundle mainBundle] loadNibNamed:@"DetailedView" owner:self options:nil];
    }
    else {
        nibViews = [[NSBundle mainBundle] loadNibNamed:@"NormalView" owner:self options:nil];
    }

    // create and initialize product view object
    ProductView *productView = [nibViews objectAtIndex:0];

    // configure a view here..

Йо мог бы поместить все версии представления в один xib. В этом случае вы изменяете только индекс в nibViews objectAtIndex:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...