Можно ли создавать разные файлы .xib, используя один класс iphone SDK - PullRequest
0 голосов
/ 19 мая 2010

В моем приложении мне нужно загружать разные .xib в разные ячейки tableView в зависимости от категории данных, которые я получаю от анализатора. Я хотел спросить, можно ли создавать разные файлы .xib, принадлежащие к одному и тому же классу, так как это уменьшит нагрузку, поскольку у меня есть почти 13 категорий, а значит, 13 .xib файлов.

Заранее спасибо.

Ответы [ 3 ]

2 голосов
/ 19 мая 2010

@ "Я хотел спросить, можно ли создавать разные файлы .xib, принадлежащие к одному и тому же классу, так как это уменьшит нагрузку, поскольку у меня почти 13 категорий, а значит, 13 .xib файлов."

Файлы xib не являются нагрузкой на память, если они не загружены, в этом случае создается объект-владелец файла. Поэтому, учитывая это, не имеет значения, сколько перьев у вас есть для вашего класса, для объекта каждого класса viewController загружается соответствующий xib. Таким образом, в конечном итоге вы должны поставить условие проверки, как заявлено RaYell, было бы лучше ввести эту проверку, когда вы порождаете объект viewController, вместо этого проверяя условие для загрузки соответствующего xib.

Не беспокойтесь о создании 13 viewControllers, вам будет легче вносить изменения в ваш проект позже, если есть изменения в требованиях. Вы оцените этот подход.

Если вы создаете только один подкласс UIViewController и загружаете один из 13 xib на основе какого-либо условия, скажем, возникает требование, что вы добавляете кнопку / label / textField ТОЛЬКО в 13-й xib и нуждаетесь в ее ссылке в вашем viewController учебный класс. Как бы вы этого не достигли, вы поддерживаете IBOutlet в общем классе viewController и вводите проверку if-else, чтобы увидеть, является ли это 13-й категорией. Код становится неопрятным со множеством условий if else.

1 голос
/ 19 мая 2010

Но как вы будете устанавливать соединения (розетки), которые будут отличаться в разных .xib файлах?

Будете ли вы хранить множество розеток и акций в одном контроллере? Если так, то подумайте, случайно вы пытаетесь получить доступ к розетке, которая, как предполагается, имеет какой-то другой перо. Тогда что будет?

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

1 голос
/ 19 мая 2010

Если вы имеете в виду, что вы хотите иметь несколько NIB для одного контроллера представления, то это, безусловно, возможно. На самом деле так происходит локализация приложений. Затем вы можете загрузить конкретный NIB при инициализации вашего контроллера.

NSString *nibName = @"DefaultNibName";
if (someCondition) {
     nibName = @"SomeOtherNib";
}

YourViewController *controller = [[YourViewController alloc] 
                                 initWithNibName:nibName bundle:nil];
[self.navigationController pushViewController:controller animated:YES];
[controller release];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...