【发布时间】:2021-02-27 03:13:03
【问题描述】:
我是 iOS 新手,这是我的问题:
我有一个带有一些文本字段和保存按钮的 saveCardViewController(以模态方式呈现)。
@IBAction func Save(_ sender: UIButton) {
date = datePicker.date
try! realm.write() {
sessionCard.pokerType = pokerTypeSegment.titleForSegment(at: pokerTypeSegment.selectedSegmentIndex)!
date = dateFormatter.string(from: date)
sessionCard.handsPlayed = Int(handPlayedTextlabel.text!) ?? 0
sessionCard.moneyIn = Int(moneyInTextLabel.text!) ?? 0
sessionCard.moneyOut = Int(moneyOutTextLabel.text!) ?? 0
sessionCard.timePlayed = Int(timePlayedTextLabel.text!) ?? 0
sessionCard.sortDate = date
realm.add(sessionCard)
}
dismiss(animated: true, completion: nil)
}
在按下 Save 按钮并关闭 saveCardViewController 后,我如何在主 ViewController 上重新加载数据()。
谢谢!
编辑#1:
感谢@davidev 的回答,我做了更改,但仍然没有更新
我的 ViewController 与 TableView:
class SessionViewController: BackgroundViewController, RefreshViewDelegate {
func refreshView() {
tableView.reloadData()
}
override func viewDidLoad() {
super.viewDidLoad()
tableView.delegate = self
tableView.dataSource = self
}
我的 ViewController 带有数据和保存按钮:
protocol RefreshViewDelegate {
func refreshView()
}
class AddSessionViewController: UIViewController, UITextFieldDelegate {
var delegate: RefreshViewDelegate?
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func TEST2(_ sender: UIButton) {
delegate?.refreshView()
dismiss(animated: true, completion: nil)
}
【问题讨论】:
-
NotificationCenter/委托模式或回调
-
我赞成@davidev 的回答,因为他专注于使用委托。通知的唯一问题 - 它们会起作用 - 是委托是 1:1(意味着您的
saveCardViewController与呈现它的 VC 紧密相关)通知不是(它们将其发送给订阅它的第一个接收者)。至于使用回调?我不确定,但听起来不像你想要的。 -
我编辑我的问题,你们可以看看@davidev
-
看起来不错。但是显示使用您以模态方式打开子视图的代码。在那里,您创建子视图,您必须设置委托。让 vc = AddSessionViewController() 然后 vc.delegate = self
-
@davidev 我认为我做错了什么,因为我连接了这样的视图prnt.sc/vjp9al
标签: ios swift uiviewcontroller tableview dismiss