尝试更改属于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/