所以我正在制作一个闹钟.一个视图控制器是表视图.另一个视图控制器由带有提交按钮的UIDatePicker组成.目标是当用户单击提交按钮时,它会将日期保存在日期选择器上.除了保存日期之外,它还是表视图控制器的一个区域.我试图在单元格中显示保存为标签的时间.
这是我的DatePicker视图控制器的代码.我在函数之外定义了变量.然后当他们点击提交时,它应该更新值.但是当它通过segue时它不会更新它.
var myDate = "1:39 PM"
@IBAction func submitDate(_ sender: AnyObject) {
myDate = DateFormatter.localizedString(from: dateOutlet.date, dateStyle: DateFormatter.Style.none, timeStyle: DateFormatter.Style.short)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "save" {
let toViewController = segue.destination as! TableViewController
toViewController.myDate = myDate
}
}
Run Code Online (Sandbox Code Playgroud)这是我的表视图控制器的代码.当我单击提交时,它不会将标签显示为在DatePicker中选择的时间.它显示"下午1点39分".这是我最初定义的.
var myDate = "0"
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell
cell.textLabel?.text = myDate
return cell
}
Run Code Online (Sandbox Code Playgroud)myDate除非您稍后要使用它,否则不要在源视图控制器中声明.
此外,如果您的submitDate函数中没有任何代码来显示目标视图控制器,您可能不需要它,因为您'save'设置的segue会自动处理.
在源视图控制器中
@IBAction func submitDate(_ sender: AnyObject) {
//don't need anything here - remove this function unless doing anything else
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "save" {
if let toViewController = segue.destination as? TableViewController {
toViewController.myDate = DateFormatter.localizedString(from: dateOutlet.date, dateStyle: DateFormatter.Style.none, timeStyle: DateFormatter.Style.short)
}
}
}
Run Code Online (Sandbox Code Playgroud)
在目标视图控制器中
var myDate: String!
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = Bundle.main.loadNibNamed("TableViewCell", owner: self, options: nil)?.first as! TableViewCell
cell.textLabel?.text = myDate
return cell
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10520 次 |
| 最近记录: |