Подключите две XIB к одному ViewController - PullRequest
1 голос
/ 12 марта 2012

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

Я знаю, что это можно сделать, потому что это универсальное приложение, и представления по умолчанию для универсального проекта включают в себя одно основное представление для iPhone и одно основное представление для iPad. Однако они реализованы автоматически, и поэтому я не знаю, как это повторить.

Итак, суть этого вопроса такова: как подключить две XIB к одному viewcontroller?

Спасибо

  • Jake

Ответы [ 4 ]

9 голосов
/ 12 марта 2012

в коде .. где бы вы ни разместили новый вид .. нравится это

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
{
            self.MainView = [[[YOurViewController alloc] initWithNibName:@"YOurViewController_iPad" bundle:nil]autorelease];

}
else
{
    self.MainView = [[[YOurViewController alloc] initWithNibName:@"YOurViewController_iPhone" bundle:nil]autorelease];
}

Вам придется заменить имя пера и имя класса на ваше.

Над этим ... один более важный шаг заключается в каждом xib-файле .. нажмите Владелец файла .. и в i * инспектор стоматологии * (значки в правой верхней части) .. убедитесь, что он класса YOurViewController

0 голосов
/ 12 сентября 2013

Данте ответил на проблему, с которой я столкнулся.«Кроме того ... еще один важный шаг - перейти к каждому файлу xib ... щелкнуть на" Владелец файла "(левый столбец) ... и в инспекторе i * dentity * (значки в правой верхней части) .. убедиться, чтопринадлежит к классу YOurViewController "

Но я добавлю, что все ваши кнопки установлены в одном Nib.Затем разместите их, но не соединяйте их вторым образом, как при просмотре помощника.Вместо этого щелкните правой кнопкой мыши по Владельцу файла в левом столбце, и вы увидите всю таблицу ваших кнопок и выходов, готовых для подключения к объектам в новом Nib.

Надеюсь, это поможет.

0 голосов
/ 06 января 2013

Из кода:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){

videosController = [[SoftLensAdvanceSearch alloc] initWithNibName:@"VideosController_ipad" bundle:nil];
}
else{//iphone
videosController = [[SoftLensAdvanceSearch alloc] initWithNibName:@"VideosController" bundle:nil];
}

Из IB

Создайте 2 разные версии файла "xib" и укажите "имя файла" (первая группа в окне свойств в xcode4.3+), т.е. для iphone добавьте имя файла iphone и для ipad добавьте имя файла ipad.

0 голосов
/ 12 марта 2012

Сначала при загрузке представления вам, возможно, придется проверить, какое это устройство.Если iPhone xib1, иначе xib2.О том, как загрузить сам XIB.это былоЕсли вы хотите изменить представление в UIViewController, просто используйте этот код:

NSArray *nibObjs = [[NSBundle mainBundle] loadNibNamed:@"xib2" owner:self options:nil];
UIView *aView    = [nibObjs objectAtIndex:0];
self.view = aView;
...