【发布时间】:2014-10-07 00:25:57
【问题描述】:
我尝试在子类中调用startGame() 方法,但是,nButton 似乎没有初始化。
错误是
在展开可选值时意外发现 nil。
代码:
import UIKit
class ViewController: UIViewController {
@IBOutlet var startButton: UIButton?
@IBOutlet var nButton: Array<UIButton>?
@IBOutlet var overLable: UILabel?
func indexOf(buttonToFind:UIButton,array:Array<UIButton>)->Int
{
var count = 0
for item in array
{
if(buttonToFind != item)
{
count++
}
else
{
break
}
}
return count
}
var deck = ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25",]
var next = 0
@IBAction func pressButton(sender: UIButton)
{
var buttonIndex = indexOf(sender, array: nButton!)
if(sender.titleLabel.text != deck[next])
{
overLable!.text = "Game Over"
time.invalidate()
presentViewController((self.storyboard.instantiateViewControllerWithIdentifier("container")) as UIViewController, animated: true, completion: nil)
}
else
{
overLable!.text = "Go on"
next++
}
for(var i=0; i<25; i++)
{
nButton![i].enabled=((next<25))
}
if(next==25)
{
overLable!.text = "Congratulations"
presentViewController((self.storyboard.instantiateViewControllerWithIdentifier("container")) as UIViewController, animated: true, completion: nil)
}
}
var count = 20
var time = NSTimer()
@IBAction func start(sender: UIButton)
{
startGame()
startButton!.enabled = (startButton!.titleLabel.text == "Start")
}
func update()
{
startButton!.setTitle("\(count--)", forState: UIControlState())
//timeLable2.text = "\((count--)%10)"
if(count < 0)
{
time.invalidate()
overLable!.text = "Game Over"
}
}
func startGame()
{
var number = [UInt32]()
func displayNumber(index:Int) -> UInt32
{
for( var i = 0; i<100; i++)
{
var num = 0
var inta = arc4random()%25+1
for item in number
{
if(inta == item)
{
num++
}
}
if(num==0)
{
number.append(inta)
}
}
return number[index]
}
for (var i = 0; i<25; i++ )
{
//HERE IS THE ERROR...
nButton![i].setTitle("\(displayNumber(i))", forState: UIControlState())
}
overLable!.text=""
next = 0
for(var i=0; i<25; i++)
{
nButton![i].enabled=(next==0)
}
time.invalidate()
count = 30
time = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: ("update"), userInfo: nil, repeats: true)
}
}
ContainerVC 类:
import UIKit
class ContainerViewController: ViewController
{
@IBAction func restartButton(sender: UIButton)
{
dismissViewControllerAnimated(true, completion: nil)
super.startGame()
}
}
有人知道怎么处理吗?
【问题讨论】: