我有一个按下按钮时启动的计时器。
生成随机数,当时间到达随机数(1-100)时,时间应该停止。
我能使它工作的唯一方法是在时间函数(计数)中生成随机数,但是每次计数器增加时都会生成一个随机数,这意味着只有当随机数生成相同的时候它才会停止作为柜台。如果随机数和时间不在同一个数字上,则时间超过100 - 我发现这是通过放置一个标签来显示随机数。
我设法通过将随机数放在按钮功能中来生成一次随机数,然而定时器功能无法识别stopNumber。这种方式似乎是最实用的,如何从计数功能中的按钮功能调用变量stopNumber?
以下代码:
func generateNewNumber() -> UInt32 {
return arc4random_uniform(100) + 1
}
func Counting() {
var stopNumber:Int = Int(generateNewNumber())
timerCount += 1
timerLabel.text = "\(timerCount)"
if timerCount == stopNumber {
timer.invalidate()
timerRunning = false
}
@IBAction func startButton(sender: UIButton) {
if timerRunning == false && timerCount == 0 {
timer = NSTimer.scheduledTimerWithTimeInterval(0.06, target: self, selector: Selector("Counting"), userInfo: nil, repeats: true)
timerRunning = true
}
}
我对此很新,任何帮助都会非常感激。
答案 0 :(得分:0)
在函数范围之外声明您的变量,但是在类的范围内。 以下代码段显示了此概念。如果您需要帮助将其实现到您的代码中,请更加努力:) 如果仍然无效,请再次询问。
class myClass{
private var stopNumber:Int = 15
func counting() {
stopNumber++
//You can access this variable from within all functions inside of myClass
}
}
答案 1 :(得分:0)
您可以通过多种方式共享变量。
在方法之外创建一个变量,这样做:
class myClass {
var myVariable = 0
myMethod() {/*use variable here*/}
anotherMethod() {/*use variable here too*/}
}
您可以在类之外创建变量,甚至可以让其他类可以访问:
var myVariable = 0
class myClass {
myMethod() {/*use variable here*/}
anotherMethod() {/*use variable here too*/}
}
您可以在调用方法时将变量作为参数传递:
myMethod() {
var variable = 0
anotherMethod(variable) {/*use variable here*/}
}
anotherMethod(var variab) {/*use 'variab' here*/}
这是相当不方便的,这就是为什么我更喜欢使用其中一个。
我希望能帮到你:)。
答案 2 :(得分:0)
感谢所有的输入,我上面的一些问题是声明函数外部的变量导致在App启动时生成随机数。我希望每次按下开始按钮时都会生成一个新的随机数。
我找到了以下解决方案
var stopNumber = 0
}
func Counting() {
timerCount += 1
timerLabel.text = "\(timerCount)"
if timerCount == stopNumber {
timer.invalidate()
timerRunning = false
}
@IBAction func startButton(sender: UIButton) {
var stopGen:Int = Int (arc4random_uniform(100) + 1)
stopNumber = stopGen
if timerRunning == false && timerCount == 0 {
timer = NSTimer.scheduledTimerWithTimeInterval(0.06, target: self, selector: Selector("Counting"), userInfo: nil, repeats: true)
timerRunning = true
}
}
感谢大家的帮助
答案 3 :(得分:0)
let randomNumber:Float = arc4random_uniform(2) == 0 ? -1.0 : 1.0