Программирование универсального приложения в iOS

Когда я программирую универсальное приложение, скажу, что у меня есть IBAction:

(IBAction)magicCode:(id)sender { textField1.text = "TEST"; } 

Мне нужно создать новый IBAction для каждого вида (iPad и iPhone). Я не могу иметь textField1 дважды в файле заголовка, поэтому мне просто интересно, как все это делают. Нужно ли помещать текстовое поле в приложение iPhone с другим именем, чем в iPad? Или есть другой способ, которым все это делают?

2 Solutions collect form web for “Программирование универсального приложения в iOS”

Нет, вы можете иметь тот же IBAction и IBOutlet в UIViewController, который имеет дело с текстовыми полями в двух разных Nib (один для iPhone и один для iPad). В этом весь смысл разделения между View Controller и Views в архитектуре MVC.

Просто используйте тот же UIViewController, что и владелец файла в обоих Nib, и сделайте все соответствующие соединения IBOutlet и IBAction, и все будет работать.

Мне нужно создать новый IBAction для каждого вида (iPad и iPhone).

Во-первых, действия обычно включаются в контроллеры просмотра, а не в представления. Я думаю, это, вероятно, то, что вы имели в виду, но я указываю на разницу, потому что я видел, как многие люди путаются в этом вопросе.

Когда вы создаете универсальное приложение, то есть одно приложение, которое адаптирует свой пользовательский интерфейс к устройству (iPad или iPhone / iPod Touch), на котором оно работает, общей стратегией является предоставление различных макетов представлений, которые наилучшим образом используют доступные размер экрана, но использовать одни и те же контроллеры. Например, скажем, у вас есть приложение с интерфейсом master / detail. На небольших устройствах вы сначала представите основную часть интерфейса, и когда пользователь выберет что-то, вы увидите детальную часть интерфейса. На iPad, с большим экраном, вы одновременно показываете как основные, так и подробные интерфейсы в режиме разделения. Сравнивая эти два варианта, представления, вероятно, будут разными, и представление представлений контроллеров будет различным, но сами диспетчеры представлений должны оставаться неизменными. Это хорошо, поскольку большая часть работы по созданию приложения идет на создание контроллеров представления.

Если ваше приложение похоже на то, что я описал (или если вы можете сделать его похожим), то нет, вам не нужны отдельные действия для iPad и iPhone, потому что вы будете использовать одни и те же контроллеры представлений в обоих случаях. Однако могут быть моменты, когда поведение приложения на двух разных устройствах отличается от того, что имеет смысл иметь специфичные для iPad и специфичные для iPhone контроллеры представлений. Вы все равно сможете использовать одни и те же действия, выведя каждый из них из общего родительского класса, который содержит действия. Если нет, вам нужно, чтобы каждый класс выполнял свои собственные действия.

Interesting Posts

Автоматическая проверка орфографии для Xcode

Существует ли эмулятор iPhone для Windows 7?

Xcode перестает работать после установки «xcode-select -switch»

iOS: Как я могу отправлять электронную почту автоматически с iPad в спящем режиме каждый час в течение X часов?

Найти загруженный файл в папке документов iPhone через iTunes

уведомление о выпуске apple не работает в производстве

Мутирование self (struct / enum) внутри экранирующего закрытия в Swift 3.0

Swift tableView медленное и прокручиваемое отставание

Основные данные приводят к исключению в endUpdates

iOS – изменение размера вертикальных представлений с видом разделителя

Как автоматически отключить автоматическую яркость?

Ориентация на Iphone и 2 файла Nib

Распознавание жеста в Apple Watch (WatchKit)

Отображать изображение в панели уведомлений с удаленным уведомлением (уведомление мультимедийного потока) в iOS 10

Невозможно найти переменную: Promise на iOS 7

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.