【发布时间】:2017-11-04 10:05:34
【问题描述】:
我在使用容器视图和分段控制来实现切换视图时遇到问题。我在一个视图控制器中放置了两个容器视图,并且每个容器视图都嵌入了一个新视图(三个视图控制器在同一个 UIViewController 中)。
这是我的代码
import UIKit
import Charts
class ReportViewController: UIViewController {
@IBOutlet weak var containerTwoWeeks: UIView!
@IBOutlet weak var containerToday: UIView!
@IBOutlet weak var segUi: UISegmentedControl!
@IBOutlet weak var resultLabel: UILabel!
@IBOutlet weak var paymentPie: PieChartView!
@IBOutlet weak var incomePie: PieChartView!
override func viewDidLoad() {
super.viewDidLoad()
// pieChartUpdate()
// selectResultData()
}
@IBAction func segChange(_ sender: UISegmentedControl) {
switch segUi.selectedSegmentIndex {
case 0:
self.containerTwoWeeks.isHidden = false
self.containerToday.isHidden = true
break
case 1:
self.containerTwoWeeks.isHidden = true
self.containerToday.isHidden = false
break
default:
break
}
}
func selectResultData() {
resultLabel.attributedText = reportService.selectResultData()
}
func pieChartUpdate () {
(too much code here, ignore it)
}
}
一切正常,直到我在 vieDidLoad() 中调用了 pieChartUpdate() 或 selectResultData() 方法,错误信息如下
“线程 1:致命错误:在展开可选值时意外发现 nil”
我不用调用pieChartUpdate()或者selectResultData()方法就可以切换视图,所以很想知道原因和解决方法。希望有人能解决这个问题,谢谢。
【问题讨论】:
-
resultLabel可能是nil。 -
但是在我想分段切换视图之前图表运行良好,resultLabel中有数据并且图表出来了,不知道使用两个容器视图是否有冲突?
-
我尝试了resultLabel.text = "abc",但还是出现了同样的错误,听起来我不能使用resultLabel?
-
因为是
nil,比如你没有连接插座。