Подтвердить что ты не робот

Как связать файл .xib с файлом класса с Xcode 4

начали новый универсальный проект под новым Xcode4. Мое приложение работает как на iPhone, так и на iPad, но не очень хорошо для iPad. У меня есть 2 файла .xib для MainWindow: MainWindow.xib(устройство iPhone) и MainWindow-Ipad.xib(устройство iPad). Но только один .xib файл для моего MainView: MainView.xib.

Итак, я пытаюсь создать конкретный .xib файл для iPad-устройства:

Новый файл > Пользовательский интерфейs > Вид → рядом → семейство устройств: iPad → MainView-iPad.xib → save

И, конечно, нет ничего связанного, нет ссылки на выход, нет ссылки на какой-либо класс.

Я проверяю каждый эскиз моего нового MainView-iPad.xib, чтобы связать его с моим классом MainViewController без успеха!?

Где или как я могу связать его с моим классом MainViewController? Спасибо заранее.

4b9b3361

Ответ 1

Правильный ответ был задан пользователем763308:

Чтобы связать .xib с классом в Xcode4:

  • Откройте ваш .xib.
  • В placeholder: выберите File Owner.
  • В третьем миниатюре: "Идентификационный инспектор" правой панели, отредактируйте поле "Пользовательский класс" и введите имя своего класса.

Мне также пришлось:

  • Щелкните по корневому представлению в разделе "Объекты".
  • Нажмите последнюю вкладку: "Показать подключения".
  • Перетащите "Новая ссылочная розетка" в "Файл владельца" и выберите "Просмотр".

Ответ 2

Вы хотите создать новый подкласс UIViewController, а не новый файл пользовательского интерфейса. Это создаст ваш .xib, а также файлы классов (.m и .h). Шаблон находится в Cocoa Touch.

Желание ссылаться на существующий контроллер представления, вероятно, не очень хорошая идея. Если вы следуете шаблону проектирования MVC (Model-View-Controller), вы разделяете классы данных и контроллеры представлений. Если можно, переместите вещи из класса MainViewController и в класс данных, которым он владеет. Затем создайте еще один контроллер представления для iPad и сделайте его собственным экземпляром вашего класса данных, который вы создали.

Ответ 3

Не обязательно неверно иметь отношение xix к классу контроллера 2: 1 в случае универсального приложения. Вот шаблон, который я следую:

У вас есть класс MainViewController. У вас есть 2 файла .xib: MainView-iPhone.xib и MainView-iPad.xib. Оба этих файла имеют выход "File Owner", установленный в MainViewController. Теперь, чтобы гарантировать, что контроллер представления фактически загружает правильный интерфейс и соединяет все правильные выходы в зависимости от устройства, на котором работает приложение, я сделаю что-то вроде следующего:

MainViewController* controller = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    controller = [[MainViewController alloc]initWithNibName:@"MainView-iPad" bundle:[NSBundle mainBundle]];
} else {
    controller = [[MainViewController alloc] initWithNibName:@"MainView-iPhone" bundle:[NSBundle mainBundle]];
}
/* Present the controller */

Теперь я должен также сказать, что это хорошая идея, если не слишком много различных путей кода, которые необходимо соблюдать при запуске на разных устройствах. Если поведение контроллера более специализировано при работе на iPad и iPhone, лучше абстрагировать общее поведение в MainViewController, а затем написать две подвалы: MainViewController_iPhone и MainViewController_iPad. Каждый подкласс затем загружает соответствующий .xib файл и обрабатывает всю специфику внутри. В этом случае вышеприведенный код будет больше похож:

MainViewController* controller = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    controller = [[MainViewController_iPad alloc] init];
} else {
    controller = [[MainViewController_iPhone alloc] init];
}
/* Present the controller */

Ответ 4

Чтобы связать .xib с файлом класса u, выполните следующие действия: -

1) перейдите в правую сторону. 2) нажмите на третью кнопку, и у вас есть строка с вопросом о пользовательских class der u просто напишите имя файла класса u, чтобы оно было связано.

для создания реферирующих точек: -

1) u может скопировать все выходы из iPhone.xib и вставить его здесь, а затем перетащить все выходы в файл владельца и затем подключить их.