当我添加新值时,如何从另一个视图控制器重新加载表视图



我已经在StackOverFlow上尝试了与我相同的问题的答案,但没有奏效。

这是我的故事板。

故事板

这是我ViewController的代码

var people = [Person]()
@IBOutlet weak var patientView: UITableView!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    let fetchReq: NSFetchRequest<Person> = Person.fetchRequest()
    do{
        let people = try PersistenceService.context.fetch(fetchReq)
        self.people = people
        self.patientView.reloadData()
    }catch{
    }
}
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    patientView.reloadData()
}

这是我TableViewController的代码

var people = [Person]()
@IBOutlet weak var patientName: UITextField!
@IBOutlet weak var patientAge: UITextField!
@IBAction func btnAdd(_ sender: UIButton) {
    let person = Person(context: PersistenceService.context)
    person.name = patientName.text
    person.age = Int16(patientAge.text!)!
    PersistenceService.saveContext()
    self.people.append(person)
}
@IBAction func btnClear(_ sender: UIButton) {
}
override func viewDidLoad() {
    super.viewDidLoad()
}

问题是,当我添加一个人并返回到主视图控制器时,表不会重新加载。但是,当我关闭应用程序并再次打开时,数据将被获取并重新加载。

试试这个。将获取请求放在 viewWillAppear 中,并将其从 viewDidLoad 中删除。告诉我它是否有效。

 override func viewWillAppear(_ animated: Bool) {
        let fetchReq: NSFetchRequest<Person> = Person.fetchRequest()
        do{
            let people = try PersistenceService.context.fetch(fetchReq)
            self.people = people
            self.patientView.reloadData()
        }catch{
        }
         patientView.reloadData()
    }

相关内容

最新更新