У меня есть массив с несколькими строками в нем, и textView показывает только одну строку из них (это работает уже отлично). Но теперь я хочу обновить текст, когда нажимаю кнопку. Но это не сработает. То, что я пытался и не работает:SWIFT: Как обновить текст из массива при нажатии кнопки?
@IBAction func refreshButtonDidPress(sender: AnyObject) {
randomizedText()
}
randomizedText() является функцией, где я, где я только загрузить мой рандомизированное массив строк. А также я вызываю эту функцию в viewDidLoad, поэтому textView при запуске не пуст.
Надеюсь, вы сможете помочь.
Обновление с полным кодом:
Функция randomizedText():
func randomizedText() {
textView.text = randomIdioms
textView.selectable = false
}
randomIdioms от следующего отдельного расширения:
extension Int {
public static func randomIn(#range: Range<Int>) -> Int {
let difference = range.endIndex - range.startIndex
let randomPick = arc4random_uniform(UInt32(difference))
return Int(randomPick) + range.startIndex
}
}
let idioms = [
"One Two Test",
"This is the second exampleThis is the second example",
"The last exampleThe last exampleThe last exampleThe last example"
]
let randomIdioms = idioms[Int.randomIn(range: 0..<idioms.count)]
Как предложил, теперь я попытался :
@IBAction func refreshButtonDidPress(sender: AnyObject) {
randomizedText()
textView.setNeedsDisplay()
}
Но это не сработает. Я могу нажать кнопку обновления несколько раз, не переосмысливая textView другой строкой.
Следующее обновление с рабочим случайным: Вместо того, чтобы использовать генерацию случайных чисел в расширении, я попробовал это в моей FUNC и называют это в @IBAction весело refreshButtonDidPress, и она работает:
func randomizedText() {
let idioms = ["One Two Test", "This is the second exampleThis is the second example", "I am not the idiom", "The last exampleThe last exampleThe last exampleThe last example"]
let index = Int(arc4random_uniform(UInt32(idioms.count)))
textView.text = idioms[index]
textView.selectable = false
}
Но я не имеют клей, что не так в расширении.
Если мы не увидим, что randomizeText мы не сможем вам помочь. –
Да, введите код функции здесь –
Я обновил свой первоначальный пост с полным кодом, также с помощью textView.setNeedsDisplay() без успеха. – Matt