Мне нужно реализовать представление, которое требует от меня создания кнопок на основе ответа с сервера.Динамически создавать UIButton на основе ответа от сервера
Пример ответа:
{
...
"enable_button_1" = 1;
"enable_button_2" = 1;
"enable_button_3" = 1;
...
}
В настоящее время я пытаюсь создать кнопки вручную с помощью Interface Builder. И каждый из них встроен в UIView и накладывается поверх друг друга. Например: Они скрыты по умолчанию. Таким образом, всякий раз, когда включена или больше кнопок, я проверю с помощью условий if
, а затем отобразите вид.
например. только одна кнопка включена
например. две кнопки включена
Но дело в том, поступая так, я бы, вероятно, пропустить несколько прецедентов, и это, кажется, как плохая практика. Есть ли способ создать его динамически вместо создания нескольких кнопок в UIViews в Interface Builder?
Если вы хотите использовать Interface Builder вам нужно будет добавить кнопки, как вы теперь на экране, создать IBOutlet для ширины каждой кнопки, и установите ширину до 0,0, чтобы «скрыть» нужные кнопки. Если вы делаете свои ограничения правильно, все будет изменять размер для вас ... Говоря, что если вы хотите использовать цикл, чтобы сделать его более масштабируемым, тогда вам придется делать это в коде. Если у вас есть только 3 кнопки, как описано выше, то Interface Builder будет работать отлично, но я рекомендую создавать IBOulets для ширины кнопок вместо того, чтобы «скрывать» их, что намного мощнее. – DBoyer
@DBoyer, прохладно. спасибо за предложение. Теперь он «скрыт», но он не изменяется. Я попытался установить ограничения, но все же. Почему установка ширины для скрытия кнопки лучше, чем использование setHidden? –
Если вы установите горизонтальные ограничения между кнопками, изменение ширины приведет к тому, что соседняя кнопка заполнит оставшееся пространство. Если ширина равна 0.0, кнопка не будет отображаться на экране, поэтому ее «скрытый», а соседняя кнопка будет расширена, чтобы заполнить оставшееся пространство (это сила автоматического макета). – DBoyer