当按下按钮时,如何获得标签以显示随机文本? [迅速]

时间:2015-07-20 14:55:47

标签: ios xcode swift

我正在开发我的第一个应用程序,当按下按钮时,我完全坚持在标签中生成随机文本。这里有更多信息:

该应用程序是一个非常简单的学习工具,它将帮助我记住着名历史学家的引用(我知道我可以使用笔和纸,但这种方式更有趣,我的朋友也可以使用它)。

这就是我所拥有的:

@IBAction func quoteButtonTapped(sender: AnyObject) {
    var randomNumber = arc4random_uniform(5) + 1
    var QuoteString:String = String(format: "quote%i", randomNumber)

    self.quoteLabel.text = QuoteString

    var quote0 = "Quote 000"
    var quote1 = "Quote 001"
    var quote2 = "Quote 002"
    var quote3 = "Quote 003"
    var quote4 = "Quote 004"
    var quote5 = "Quote 005"
    var quote6 = "Quote 006"
}

(代码图片找到here

正如您所看到的,随机生成器在前缀'quote'中添加一个数字,然后标签(quoteLabel)显示结果'Quotestring'(前缀和随机数放在一起)

然而,发生的事情是标签只显示文本'quote1'或'quote3'而不是我附加到那些“Quote 000”的变量

我如何让Label显示变量(“引用000”),而不仅仅是我所谓的那些(quote5) - 我做了什么重大错误,或者我错过了什么小事?

更多信息:

  • 引用000 - 006正是我所谓的测试,并将被引号替换。

  • 该应用在iOS模拟器中运行正常,只是反复显示'quote0'或'quote5'等。

非常感谢,任何帮助都会很棒!

4 个答案:

答案 0 :(得分:4)

不要创建一堆单独的引号变量。创建一个引号数组:

let quotes = [
  "Now is the time for all good men to come to the aid of their country",
  "Vini, vidi, vichi",
  "I regret that I have but one life to give for my country",
  "Illegitimi non carborundum"
  ]

let index = arc4random_uniform(UInt32(quotes.count))
let aQuote = quotes[index]

顺便说一下,不要张贴代码图片。使用代码标记将代码放入您的帖子,就像我上面所做的那样。

答案 1 :(得分:2)

  

我如何让Label显示变量("引用000"),而不仅仅是我称之为(quote5) - 我做了什么重大错误,或者我错过了什么小事?

问题是这行代码var QuoteString: String = String(format: "Quote 00%d", randomNumber)实际上是将String值分配给QuoteString。它没有引用您的变量quote0 .. quote6及其相关引号。你实际上是在告诉它QuoteString ="" +随机数。

这两行我觉得你正在努力实现的目标。

    let quoteArray = ["Quote 000", "Quote 001", "Quote 002", "Quote 003", "Quote 004", "Quote 005", "Quote 006"]
    self.quoteLabel.text = quoteArray[Int(arc4random_uniform(UInt32(quoteArray.count)))]

答案 2 :(得分:1)

因为你只是使用字符串,所以你不需要拥有所有字符串变量的额外代码。只需使用:

NSArray *values = [[NSArray alloc] initWithObjects:@"1", @"2", @"3", nil];

var QuoteString:String = String(format:Quote 00%d,randomNumber)

你不应该使用这样的字符串来选择变量名。另一种选择是使用Switch Case,但上述代码是目前最好的选择。

答案 3 :(得分:0)

嗯,你只是创建一个字符串对象并将其放入标签中。此外,您希望引用变量,但在声明变量之前,您正在执行此操作。你的范围也不太对,你的随机数会产生1-5之间的东西,但你想要0-6。你可以输入一个7并取走+1,但我会采用不同的方式。

我个人会把它们全部放在一个数组中并按照这样做:

@IBAction func quoteButtonTapped(sender: AnyObject) {

    let quotes: NSArray = ["Quote 000", "Quote 001", "Quote 002", "Quote 003", "Quote 004", "Quote 005", "Quote 006"]

    let range: UInt32 = UInt32(quotes.count)

    let randomNumber = Int(arc4random_uniform(range))
    let QuoteString = quotes.objectAtIndex(randomNumber)

    self.quoteLabel.text = QuoteString as? String

}