【发布时间】:2019-06-13 20:49:44
【问题描述】:
我使用 Tableview 在按钮单击时创建了一个显示/隐藏日期选择器并在按钮上显示日期。 但是当我运行它时,tableview 和 datepicker 内部之间有奇怪的空白空间。 当我点击这个空间时,有一个错误
'线程 1:致命错误:在展开可选值时意外发现 nil'
我认为这是因为我设置了原型单元格:1。所以我将其设为 0,但也没有用。
var dateFormatter = DateFormatter()
var datePickerIndexPath: NSIndexPath?
var datepicker : UIDatePicker?
@IBOutlet weak var ddn: UIButton!
@IBOutlet weak var TV: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
TV.isHidden=true
datepicker = UIDatePicker()
datepicker? = UIDatePicker.init(frame: CGRect(x:0, y:40, width:252, height:150))
datepicker?.setValue(UIColor(red:0.95, green:0.92, blue:0.90, alpha:1.0), forKeyPath: "textColor")
datepicker?.datePickerMode = .date
datepicker?.addTarget(self, action: #selector(datepickerViewController.dateChanged(datepicker: )),for: .valueChanged)
TV.addSubview(datepicker!)
}
...
button click action/animate
...
//talbe视图部分//
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var rows = 1
if datePickerIndexPath != nil {rows += 1 }
return rows
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "DatePickerCell", for: indexPath)
cell.textLabel?.text = dateFormatter.string(from: (datepicker?.date)!)
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
ddn.setTitle("\(datePickerIndexPath!.row)", for: .normal)
//when i click the space, an error occurs in this part//
}
}
【问题讨论】:
-
你设置过
datePickerIndexPath的值吗? -
var datePickerIndexPath: NSIndexPath?
-
查看我的答案,让我知道它是否适合您。
标签: swift uitableview