首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SWIFT:按下按钮时如何从数组中刷新文本视图?

SWIFT:按下按钮时如何从数组中刷新文本视图?
EN

Stack Overflow用户
提问于 2015-02-17 12:12:20
回答 2查看 4K关注 0票数 2

我有一个包含几个字符串的数组,而textView只显示其中的一个字符串(这已经非常好了)。但是现在我想在按下按钮时刷新文本视图。但不起作用。我试过但不起作用的:

代码语言:javascript
复制
@IBAction func refreshButtonDidPress(sender: AnyObject) {
randomizedText()
}

randomizedText()是一个函数,我在其中加载随机字符串数组。我还在viewDidLoad中调用了这个函数,所以开始时的textView不是空的。

希望你能帮上忙。

使用完整代码更新

函数randomizedText():

代码语言:javascript
复制
func randomizedText() {
    textView.text = randomIdioms
    textView.selectable = false
}

randomIdioms来自以下单独的扩展:

代码语言:javascript
复制
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)]

就像建议的那样,现在我试着:

代码语言:javascript
复制
@IBAction func refreshButtonDidPress(sender: AnyObject) {
randomizedText()
textView.setNeedsDisplay()
}

但这不管用。我可以按几次刷新按钮,而不需要用另一个字符串重新刷新textView。

下一次使用随机更新:,而不是在扩展中使用随机生成,我在函数中尝试了这一点,并在@IBAction中调用它,它运行如下:

代码语言:javascript
复制
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
}

但是我没有胶水

EN

回答 2

Stack Overflow用户

发布于 2015-02-17 13:52:07

您必须将UITextViewUITextView属性分配给要显示的字符串。UITextView不保留对数组中给它的字符串的引用。它复制它。UITextView将处理它自己的抽签调用,以及它需要重新绘制的时间。

票数 1
EN

Stack Overflow用户

发布于 2015-02-17 13:24:40

您需要向文本视图发送一个setNeedsDisplay()消息。您可以在您的randomizedText()函数中或在调用randomizedText()之后在refreshButtonDidPress()中这样做。

在调用text之前,还需要在textView上设置textView或setNeedsDisplay()属性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28561179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档