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

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

(IBAction)magicCode:(id)sender {

    textField1.text = "TEST";

}

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


person ios85    schedule 07.12.2011    source источник
comment
На всякий случай, если вы на самом деле делаете это — если вы называете вещи textField1 и т. д., то вы настраиваете себя на мир боли. Используйте описательные имена переменных, чтобы сразу было понятно, что к чему. В противном случае вы просто запутаетесь и сделаете свою жизнь намного сложнее, чем она должна быть.   -  person Jim    schedule 07.12.2011
comment
@ Джим спасибо, но это всего лишь пример. Я следую общепринятым стандартам именования, чтобы называть свои объекты.   -  person ios85    schedule 08.12.2011


Ответы (2)


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

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

person Sanjay Chaudhry    schedule 07.12.2011
comment
Это владелец файла, а не файловый менеджер. - person Jim; 07.12.2011

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

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

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

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

person Caleb    schedule 07.12.2011