我使用Interface Builder创建了一个xib视图。这样做是因为我想让用户有选择地将任意数量的这些视图添加到视图控制器中。我创建了一个Xib视图(名为“TimeRangeView.xib”),创建了一个自定义类(名为“TimeRangeView.swift”),并将xib的类设置为此自定义类,将故事板元素连接到TimeRangeView.swift的IBOutlets,将xib的文件所有者设置为TimeRangeView.swift,并在视图控制器中添加了该视图,其类设置为我的TimeRangeView.swift。
我正在使用的Storyboard UIViewController 在其内部作为子视图使用了一个Interface Builder视图;这个视图的类被分配为TimeRangeView.swift。这个视图作为IBOutlet与视图控制器相连接:
在视图控制器的viewDidLoad()方法中,我想要更改一些TimeRangeView的子视图(正如我们所讨论的那样,这些子视图已经作为IBOutlets连接)。但是当我尝试更改它们的某些属性时,它们返回了nil。
![enter image description here](https://istack.dev59.com/jHZcs.webp)
![enter image description here](https://istack.dev59.com/4R4Ds.webp)
TimeRangeView.swift:
import UIKit
class TimeRangeView: UIView {
@IBOutlet var startTimeLabel: UILabel!
@IBOutlet var startDatePicker: UITextField!
@IBOutlet var endTime: UILabel!
@IBOutlet var endDatePicker: UITextField!
@IBOutlet var addButton: UIButton!
@IBOutlet var maxTimeLabel: UILabel!
@IBAction func addButtonPressed(_ sender: UIButton) {
}
}
我正在使用的Storyboard UIViewController 在其内部作为子视图使用了一个Interface Builder视图;这个视图的类被分配为TimeRangeView.swift。这个视图作为IBOutlet与视图控制器相连接:
@IBOutlet var timeRangeView: TimeRangeView!
在视图控制器的viewDidLoad()方法中,我想要更改一些TimeRangeView的子视图(正如我们所讨论的那样,这些子视图已经作为IBOutlets连接)。但是当我尝试更改它们的某些属性时,它们返回了nil。
override func viewDidLoad() {
super.viewDidLoad()
timeRangeView.maxTimeLabel.text = "Max duration: \(timeString ?? "n/a")"
//Change the text fields' input views
let startTimeDatePickerToolBar = UIToolbar().ToolbarPicker(mySelect: #selector(dismissPicker))
let endTimeDatePickerToolBar = UIToolbar().ToolbarPicker(mySelect: #selector(dismissPicker))
startTimeDatePicker.setDate(Date(timeIntervalSince1970: NSDate().timeIntervalSince1970 + 60), animated: false)
endTimeDatePicker.setDate(Date(timeIntervalSince1970: NSDate().timeIntervalSince1970 + 120), animated: false)
timeRangeView.startDatePicker.inputView = startTimeDatePicker
timeRangeView.startDatePicker.inputAccessoryView = startTimeDatePickerToolBar
timeRangeView.startDatePicker.delegate = self
timeRangeView.endDatePicker.inputView = endTimeDatePicker
timeRangeView.endDatePicker.inputAccessoryView = endTimeDatePickerToolBar
timeRangeView.endDatePicker.delegate = self
}
timeRangeView并没有返回nil;它正在加载。但是当尝试访问timeRangeView的子视图(startDatePicker,endDatePicker,maxTimeLabel)时,它们都返回nil。
我收到的错误是:
Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value