Рандомизация Button.textlabel

xcode

#1

кто может подсказать, как сделать так, чтобы правильный ответ случайным образом появлялся в одной из 3 кнопок. сейчас по умолчанию в первой кнопке.


#2

Функцию рандома не рассматривал?


#3

Функция так есть, она работает.

extension Int {

var rnd: Int { return Int(arc4random_uniform(UInt32( self ))) }

}

extension Bool {

static var rnd: Bool { return arc4random_uniform(2) == 0 }

mutating func toggle() {

self = ! self

}

}

Но мне надо рандомно разместить имя кнопки на 1 из 3 кнопок. Не знаю откуда копать.


#4

Мне кажется вы немного намудрили, я так понимаю слова берутся из какой то базы, следовательно вам поступают сразу три слова, почему бы не юзать обычный switch

например:

switch Int.random(in: 0…2) {
case 0:
// кидаешь правильный ответ в верхнюю кнопку
case 1:
// кидаешь в среднюю кнопку
case 2:
// кидаешь в нижнюю
}

Возможно, я недопонял вашу проблему)


#5

Спасибо, попробую. Замылил глаза.


#6

Можете создать массив, перемешать его и пройтись по сабскрипту:

let verbs = [verb.translate, roundedVerb().translate, roundedVerb().translate].shuffled()
answerA.setTitle(verbs[0], for: .normal)

и так далее.

Уже есть “из коробки”, начиная с 4.2. Как и рандом.


#7

спасибо, работает. Буду избавляться от повторений значений