通过segue传递变量? Xcode 8 Swift 3
发布时间:2020-12-14 18:07:31 所属栏目:百科 来源:网络整理
导读:所以我正在制作一个闹钟.一个视图控制器是表视图.另一个视图控制器由带有提交按钮的UIDatePicker组成.目标是当用户单击提交按钮时,它会将日期保存在日期选择器上.除了保存日期之外,它还是表视图控制器的一个区域.我试图在单元格中显示保存为标签的时间. 这是
所以我正在制作一个闹钟.一个视图控制器是表视图.另一个视图控制器由带有提交按钮的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 } } >这是我的表视图控制器的代码.当我单击提交时,它不会将标签显示为在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 } 解决方法
除非您稍后要使用它,否则不要在源视图控制器中尝试声明myDate.
此外,如果您的submitDate函数中没有任何代码来呈现目标视图控制器,您可能不需要它,因为您设置的“保存”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,timeStyle: DateFormatter.Style.short) } } } 在目标视图控制器中 var myDate: String! override func tableView(_ tableView: UITableView,options: nil)?.first as! TableViewCell cell.textLabel?.text = myDate return cell } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |