Код и вопрос представляют проект Xcode в Swift.У меня есть группа кнопок, которые отображают параметры, в соответствии с которыми текст представлен на этикетке.
Текст метки получен из ключей словаря, а текст кнопки - из значений этого же словаря.Тип словаря [String: [String]
.Ключи и значения помещаются в массивы.В настоящее время я отображаю правильные данные, но некоторые значения отличаются по длине от других.
Например, одна клавиша имеет 3 значения, а другая - 5. Я хочу скрыть кнопки, если на них нет текста для отправки.Поэтому, если ключ представлен в метке и имеет 3 значения, я хочу отображать только 3 кнопки и так далее.Каков наилучший способ достижения этой функциональности?Вот мой код, который не достигает желаемого результата, которого я хочу достичь:
func startSurvey() {
if surveyQuestions.isEmpty {
surveyQuestions = Array(SampleSurvey().surveyquestions.keys)
print(surveyQuestions)
}
let rand = Int(arc4random_uniform(UInt32(surveyQuestions.count)))
questionTitle.text = surveyQuestions[rand]
var choices = SampleSurvey().surveyquestions[surveyQuestions[rand]]!
print(choices)
print(choices.count)
surveyQuestions.remove(at: rand)
var button = UIButton()
var x = 0
// var choicePool = choices.count
if choices.count == 2 {
for index in 1...2 {
button = view.viewWithTag(index) as! UIButton
button.setTitle(choices[x], for: .normal)
x += 1
if button.titleLabel?.text.isEmpty == true {
button.isHidden = true
}
}
}
else if choices.count == 4 {
for index in 1...4 {
button = view.viewWithTag(index) as! UIButton
button.setTitle(choices[x], for: .normal)
x += 1
if button.titleLabel?.text.isEmpty == true {
button.isHidden = true
}
}
}
Вот снимок экрана симулятора, так как вы видите, что этот конкретный ключ имеет только 2 значения, поэтому есть 3 пустых кнопки, яхочу скрыть пустые кнопки:
ОБНОВЛЕНИЕ: следующий код предоставил мне функциональность, к которой я стремился:
var button = UIButton()
var x = 0
let buttonTags = [0,1,2,3,4]
if choices.count == 2 {
for idx in buttonTags {
button = surveyChoices[idx]
if idx < choices.count {
button.setTitle(choices[x], for: .normal)
x += 1
} else {
button.isHidden = true
}
}
}