我有一个包含几个字符串的数组,而textView只显示其中的一个字符串(这已经非常好了)。但是现在我想在按下按钮时刷新文本视图。但不起作用。我试过但不起作用的:
@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。
下一次使用随机更新:,而不是在扩展中使用随机生成,我在函数中尝试了这一点,并在@IBAction中调用它,它运行如下:
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
}但是我没有胶水
发布于 2015-02-17 13:52:07
您必须将UITextView的UITextView属性分配给要显示的字符串。UITextView不保留对数组中给它的字符串的引用。它复制它。UITextView将处理它自己的抽签调用,以及它需要重新绘制的时间。
发布于 2015-02-17 13:24:40
您需要向文本视图发送一个setNeedsDisplay()消息。您可以在您的randomizedText()函数中或在调用randomizedText()之后在refreshButtonDidPress()中这样做。
在调用text之前,还需要在textView上设置textView或setNeedsDisplay()属性。
https://stackoverflow.com/questions/28561179
复制相似问题