Удалите UITableVIewCell из другого файла контроллера представления в XCode - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть массив "numbers", который я вызываю в своем файле табличного представления, чтобы создать ячейки табличного представления.При щелчке по нему происходит переход к контроллеру представления, который показывает подробности об этой ячейке, а внутри контроллера представления находится кнопка удаления.Как бы я удалить элемент из массива и перезагрузить данные в контроллере табличного представления?

Поэтому я установил, что при нажатии кнопки удаления запускается код выхода, удаляется элемент из массива и перезагружаются данные.Я пытался протестировать его, но, кажется, он никогда не выполняется.

Это в detailViewController, где он запускает функцию выхода и запускает протокол для удаления элемента из массива

func deleteNumber() {
    self.delegate?.unwind()
    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // Change `2.0` to the desired number of seconds.
        self.performSegue(withIdentifier: "unwindToNumbersList2WithSender", sender: self)
    }
}

Затем вКонтроллер табличного представления запускает это:

func unwind() {
        numbers.remove(at: indexPath.row)
        tableView.deleteRows(at: [indexPath], with: .fade)
        saveNumbers()
}

Я также пытался использовать:

func unwind() {
        numbers.remove(at: indexPath.row)
        tableView.reloadData()
        saveNumbers()
}

Поэтому я хотел, чтобы он выполнил либо удаление строки, либо удаление элемента из массива,и перезагрузите данные, но ни один из тех не побежал.Есть ли способ, как я могу удалить его из элемента управления подробного просмотра?

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете использовать NotificationCenter для этого,

Сначала вам нужно добавить уведомление в UIViewController вот так

let DELETE_DATA = "DELETE_DATA".notificationName()

NotificationCenter.default.addObserver(self, selector: #selector(self.delete_data), name: DELETE_DATA, object: nil)

Создать функцию с именем delete_data

 @objc func delete_data(_ notification : NSNotification){
    let userData = notification.userInfo as? [String:Any] ?? [String:Any]()

    // here you can get your wanted index to be deleted.
}

Из контроллера представления подробностей вам нужно POST это уведомление с индексом, который вы хотите удалить

let obj = ["index":`your index to be deleted`]

NotificationCenter.default.post(name: DELETE_DATA, object: nil, userInfo: obj)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...