如何重新加载整个UIView控制器页面



我想在从另一个UIViewController回来后重新加载我的UIViewController

在我的ReviewController中,我有这个代码来打开WriteReviewController

let newViewController = WriteReviewController()
navigationController?.present(newViewController, animated: true, completion: nil)

在我的WriteReviewController中,我使用

self.dismiss(animated: true, completion: nil) 

回到ReviewController. 我想使ReviewController重新加载页面,以便新评论可以显示在页面上。提前谢谢你。

首先,它是UIViewController,而不是UIController。 其次 - 这取决于您是否必须将数据从WriteReviewController传回

  1. 如果是,则需要创建一个带有函数的协议来传回新评论。

  2. 如果您只想为ReviewController重新加载数据模型,则可以简单地在viewWillAppear(animated:)函数中执行重新加载逻辑,该函数由UIViewController继承。

让我知道您需要进一步帮助的方式,我可以帮助您编写代码。


编辑:我很确定答案1是正确的,所以这里有一些帮助:

// assuming you have a struct like this for your Review data model
struct Review {
var reviewText: String
var author: String
}
// add this code to your ReviewController
protocol WriteReviewDelegate: class {
func newReviewHasBeenWritten(_ review: Review)
}
class ReviewController: UIViewController {
// ...
}
// make that ReviewController conform to this class
extension ReviewController: WriteReviewDelegate {
func newReviewHasBeenWritten(_ review: Review) {
// save the review to your model here
// afterwards, update your UI to show the new review
}
}
// add the following code to your WriteReviewController
class WriteReviewController {
weak var delegate: WriteReviewDelegate?
func saveReview() {
// called when the user wants to  save a new review
// notify the delegate (your ReviewController), that there's a new Review
self.delegate?.newReviewHasBeenWritten(self.review)
// then dismiss it, for example
self.dismiss(animated: true, completion: nil)
}
}