Как заставить 1 IBOutlet работать на разных устройствах? - PullRequest
0 голосов
/ 20 мая 2018

Скажем, у меня есть общий размер iPhone и размер iPad.

В iPad есть UIButton, который ссылается на UIViewController как IBOutlet.Принимая во внимание, что iPhone не нуждается в этом UIButton, но поскольку iPhone и iPad все в 1 Storyboard и любые другие IBOutlet идентичны.Какой самый правильный способ справиться с этим?

Я думаю, что сделать @IBOutlet weak var button:UIButton? необязательным, и только кнопка iPad будет ссылаться на него.Но каждое действие, которое я выполняю в коде, требует button?.xxxxx

Есть предложения?

1 Ответ

0 голосов
/ 20 мая 2018

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

Нажмите кнопку и перейдите кинспектор свойств.Прокрутите вниз, и вы найдете это свойство «Installed»:

enter image description here

Нажмите на знак «+», и это должно появиться:

enter image description here

Выберите «Обычный» как для «ширины», так и для «высоты».Теперь вы должны увидеть два свойства «Installed» - одно для wRhR и одно для всего остального.Просто снимите флажок, чтобы все остальное было только на iPad.

enter image description here

Теперь вам нужно быть осторожным в коде.Как ваша кнопка может быть nil на телефоне.Не забудьте сделать нулевые проверки!

...