Как обновить просмотр таблицы, когда пользователь вставляет элемент в базу данных? - PullRequest
0 голосов
/ 14 апреля 2019

Когда пользователь вставляет элемент в базу данных, а затем нажимает кнопку «Назад», чтобы вернуться к представлению таблицы, в представлении таблицы не отображается новый элемент.Я должен остановить приложение и запустить его снова для отображения нового элемента.Моя база данных работает отлично, поэтому я не думаю, что в этом проблема.

Я снова перезагружаю базу данных в mainController внутри ViewDidLoad ().Я также попытался сделать tableView.reloadData () внутри ViewDidLoad (), и это ничего не делает.

class MainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var tableView: UITableView?
    let mainDelegate = UIApplication.shared.delegate as! AppDelegate


    override func viewDidLoad() {
        super.viewDidLoad()
        // read from the database
        mainDelegate.readDataFromDatabase()

    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

        return mainDelegate.people.count

    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "BookTableViewCell") as! BookTableViewCell

        let rowNum = indexPath.row

        cell.lblTitle?.text = mainDelegate.people[rowNum].title
        cell.accessoryType = .disclosureIndicator

        return cell
    }



class NewBookItemViewController: UIViewController, UITextFieldDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var titletxt : UITextField!

    @IBAction func buttonSave(sender: UIButton){
         // step 18b - instantiate Data object and add textfield data
            let person : Data = Data.init()
            person.initWithData(theRow: 0, thetitle: title)

            let mainDelegate = UIApplication.shared.delegate as! AppDelegate

            // step 18c - do the insert into db
            let returnCode : Bool = mainDelegate.insertIntoDatabase(person: person)      


        }

1 Ответ

0 голосов
/ 14 апреля 2019

Вам нужно

override func viewWillAppear(_ animated:Bool) {
  super.viewWillAppear(animated)
  mainDelegate.readDataFromDatabase()
  tableView.reloadData()
}

Поскольку viewDidLoad вызывается один раз при загрузке виртуального канала, также не является обязанностью appDelegate делать такие вещи, учитывая наличие класса dataSource, который обрабатывает чтение / записьиз базы данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...