尝试更改属于Page类(UIViewController的子类)的一部分的标签的文本时,标题出现错误

@IBAction func StartButton(sender: AnyObject) {

    for quote in quoteList {

        var newPage = Page()
        //error is on the next line:
        newPage.Label.text = quote

        pageArray!.append(newPage)
    }

}

}

这是Page类:
class Page : UIViewController{

var index: Int = 0

var parent: PageArray?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBOutlet weak var Label: UILabel!


@IBAction func previousButton(sender: AnyObject) {
}


@IBAction func gotoListButton(sender: AnyObject) {
}


@IBAction func nextButton(sender: AnyObject) {
}

}

对于快速编程和一般的iO,我是新手。如果已经提出了类似的问题,我深表歉意。我先搜索了,但是没有找到适合我的解决方案。
我怀疑问题出在newPage的初始化上,并尝试了几种其他方式,但我似乎无法正确解决。
我的问题是我到底在做错什么,我该如何解决?

编辑:像这样工作(通过工作,我的意思是不崩溃也不做任何事情):
    @IBAction func StartButton(sender: AnyObject) {

    var pageArray: PageArray = PageArray()

    for quote in quoteList {

        var newPage = Page(nibName: "Page", bundle: nil)


        if newPage.Label != nil {
        newPage.Label.text = quote
        }

        pageArray.append(newPage)

    }

}

现在可以肯定的是newPage.Label为零。

最佳答案

好吧,pageArray可能为零,而使用!却装作并非如此。

实例化pageArray应该可以解决您的问题。

您可以查看第一个答案here来快速了解有关问号和感叹号的更多信息

编辑:

您的问题也可能来自控制器初始化,您可能需要尝试:

let mystoryboard:UIStoryboard = UIStoryboard(name: "storyboardName", bundle: nil)
var newPage:Page = mystoryboard.instantiateViewControllerWithIdentifier("idYouAssigned") as! Page

关于ios - 展开可选值(Swift)时意外发现nil,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31459656/

10-16 20:36