问题在于它表示有一个无法识别的选择器发送到实例 问题是,当我运行它时,viewDidLoad函数中的打印行仍然会打印。
这是我的代码。
import Foundation
import UIKit
class MathSubtract : UIViewController, UITextFieldDelegate {
@IBOutlet weak var firstNumber: UILabel!
@IBOutlet weak var secondNumber: UILabel!
@IBOutlet weak var operation: UILabel!
@IBOutlet weak var timerLabel: UILabel!
@IBOutlet weak var score: UILabel!
@IBOutlet weak var answer: UITextField!
@IBOutlet weak var enter: UIButton!
@IBOutlet weak var Solution: UIImageView!
@IBOutlet weak var ScoreLabel: UILabel!
@IBOutlet weak var saysTime: UILabel!
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var question: UILabel!
@IBOutlet weak var options: UIButton!
@IBOutlet weak var end: UIButton!
let defaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
let levelStuff: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var randone = 0
var randtwo = 0
var OP = 0
var Answer = 0
var correct = 0
var wrong = 0
var total = 1
var high = 0
var practice = false
var test = false
var pass = false
var level = 1
var timerCount = Int()
var timerRunning = false
var timer = NSTimer()
var timePlaceHold = 0
var numbers:[String] = ["0","1","2","3","4","5","6","7","8","9"]
var operations:[String] = ["plus","minus"]
var result:[String] = ["right","wrong"]
func Counting(){
if(practice){
timerCount++
}
else if(test){
timerCount -= 1
}
if(test && correct>=4 && timerCount<=0){
println("2")
level++
pass = true
}
timerLabel.text = "\(timerCount)"
if(timerCount<=0 && test){
answer.resignFirstResponder()
timer.invalidate()
timerRunning = false
firstNumber.hidden = true
secondNumber.hidden = true
timerLabel.hidden = true
operation.hidden = true
answer.hidden = true
enter.hidden = true
score.hidden = true
Solution.hidden = true
ScoreLabel.hidden = true
saysTime.hidden = true
options.hidden = true
question.hidden = true
questionLabel.hidden = true
end.hidden = false
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("nextPage"), userInfo: nil, repeats: false)
}
}
func nextPage(){
self.performSegueWithIdentifier("timesUpSubtract", sender: self)
}
override func viewDidLoad() {
print(test)
println(" in MathSubtract")
if(practice){
timerCount = 0
question.text = "\(total)" + "/20"
}
else if(test){
question.text = "\(total)"
timerCount = 15
}
end.hidden = true
timerLabel.text = "\(timerCount)"
score.text = "\(correct)"
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("Counting"), userInfo: nil, repeats: true)
timerRunning = true
if(level==1){
randone = randomInt(0, max: 9)
randtwo = randomInt(0, max: randone)
}
else if(level==2){
randone = randomInt(10, max: 19)
randtwo = randomInt(0, max: 9)
}
else if(level==3){
randone = randomInt(10, max: 19)
randtwo = randomInt(10, max: randone)
}
else if(level==4){
randone = randomInt(20, max: 29)
randtwo = randomInt(10, max: 19)
}
else if(level==5){
randone = randomInt(20, max: 29)
randtwo = randomInt(20, max: randone)
}
else if(level==6){
randone = randomInt(30, max: 39)
randtwo = randomInt(20, max: 29)
}
else if(level==7){
randone = randomInt(30, max: 39)
randtwo = randomInt(30, max: randone)
}
secondNumber.text = "\(randtwo)"
firstNumber.text = "\(randone)"
operation.text = "-"
operation.font = UIFont(name: operation.font.fontName, size: 90)
// randone = Int(arc4random_uniform(10))
// randtwo = Int(arc4random_uniform(10))
// OP = Int(arc4random_uniform(2))
// self.secondNumber.image = UIImage(named: self.numbers[randtwo])
// self.firstNumber.image = UIImage(named: self.numbers[randone])
// self.operation.image = UIImage(named: self.operations[OP])
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
@IBAction func txtClear(sender: UITextField) {
answer.text = ""
}
@IBAction func submitted(sender: AnyObject) {
if ((timerCount > 0 && test) || (total<20 && practice)) {
Answer = randone - randtwo
if(answer.text.toInt() != Answer){
self.Solution.image = UIImage(named: self.result[1])
wrong++
}
else{
self.Solution.image = UIImage(named: self.result[0])
correct++
score.text = "\(correct)"
}
total++
if(level==1){
randone = randomInt(0, max: 9)
randtwo = randomInt(0, max: randone)
}
else if(level==2){
randone = randomInt(10, max: 19)
randtwo = randomInt(0, max: 9)
}
else if(level==3){
randone = randomInt(10, max: 19)
randtwo = randomInt(10, max: randone)
}
else if(level==4){
randone = randomInt(20, max: 29)
randtwo = randomInt(10, max: 19)
}
else if(level==5){
randone = randomInt(20, max: 29)
randtwo = randomInt(20, max: randone)
}
else if(level==6){
randone = randomInt(30, max: 39)
randtwo = randomInt(20, max: 29)
}
else if(level==7){
randone = randomInt(30, max: 39)
randtwo = randomInt(30, max: randone)
}
self.secondNumber.text = "\(randtwo)"
self.firstNumber.text = "\(randone)"
}
if(test && correct>=4 && timerCount<=0){
level++
pass = true
}
if(practice){
question.text = "\(total)" + "/20"
}
if(test){
question.text = "\(total)"
}
txtClear(answer)
if(correct>high){
high = correct
}
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let highCheck = defaults.valueForKey("highScoreSubtract") as? String{
if(high > highCheck.toInt()){
defaults.setObject("\(high)", forKey: "highScoreSubtract")
defaults.synchronize()
}
}
else{
defaults.setObject("\(high)", forKey: "highScoreSubtract")
defaults.synchronize()
}
var myStringH = defaults.valueForKey("highScoreSubtract") as? String
let x : Int = total
var myStringT = String(x)
let y : Int = wrong
var myStringW = String(y)
let z : Int = correct
var myStringC = String(z)
if (segue.destinationViewController.isKindOfClass(OverSubtract)) {
if(pass){
levelStuff.setObject("\(level)", forKey: "level")
levelStuff.synchronize()
}
var DestViewController : OverSubtract = segue.destinationViewController as OverSubtract
DestViewController.HSText = myStringH!
DestViewController.totalText = myStringT
DestViewController.wrongText = myStringW
DestViewController.correctText = myStringC
DestViewController.practice = practice
DestViewController.test = test
DestViewController.level = level
if(correct>=4){
DestViewController.advance = true
}
}
else if (segue.destinationViewController.isKindOfClass(OptionsSubtract)) {
timer.invalidate()
var DestViewController : OptionsSubtract = segue.destinationViewController as OptionsSubtract
DestViewController.TimerPlaceHolder = timerCount
DestViewController.ScorePLaceHolder = correct
DestViewController.WrongPlaceHolder = wrong
DestViewController.TotalPlaceHolder = total
DestViewController.HSPlaceHolder = high
DestViewController.level = level
}
}
func randomInt(min: Int, max:Int) -> Int {
return min + Int(arc4random_uniform(UInt32(max - min + 1)))
}
}
如果有人可以提供帮助,我会非常感激。
答案 0 :(得分:0)
创建计时器时,需要将其分配给var:
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("nextPage"), userInfo: nil, repeats: false)
您需要将其更改为
timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "nextPage", userInfo: nil, repeats: false)