在上面的图片中,有两个视图。顶部是用于显示日期的视图(此视图的类名称为 calender视图)。底部是一个表格视图。当前视图名称是主视图。当我单击该表格视图的单元格时,它将转到下一个视图。当我取消下一个视图时,我想将一些数据传递给日历视图。如何实现这一点。
class MainView: UIViewController, UITableViewDataSource, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let next = self.storyboard?.instantiateViewController(withIdentifier: "NextVC") as! NextVC
self.present(next, animated: true, completion: nil)
}
}
class NextVC: UIViewController {
var sendingData: String?
@IBAction func backAction(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
}
class CalenderView: UIViewController{
var receiveValue: String?
}
在这里,我要关闭 nextview 时, sendingData 的值将传递到日历视图。
如何执行此操作?请帮忙。
答案 0 :(得分:2)
我可以给你两个解决方案:
首先,您应该使用 sendingData 发布通知。
import urllib
import requests
url = '....'
response = urllib.request.urlopen(url)
接下来,在具有日历视图的主视图控制器上,您应该注册“ UpdateCalendarNotification”名称的通知。
NotificationCenter.default.post(name: NSNotification.Name(rawValue: UpdateCalendarNotification), object: sendingData)
在选择器 func registerNotifications() {
NotificationCenter.default.addObserver(self,
selector: #selector(updateCalendarView(_:)),
name: NSNotification.Name(rawValue: "UpdateCalendarNotification"),
object: nil)
}
上,您应该处理日历视图的更改。
updateCalendarView(_:)
在下一个视图控制器上,您应该添加以下处理程序:
@objc
func updateCalendarView(_ notification: NSNotification) {
if let sendingData = notification.object as? String {
/// Update calendar view
}
}
在 var onDismiss: ((String?) -> Void)?
方法中,您应该传递数据
backAction
在主视图控制器中,您应该像这样实现该块:
onDismiss?(sendingData)
希望这对您有帮助)