[Swift]: добавление новых элементов только в локальные массивы для TableView после закрытия предыдущего контроллера представления с помощью ViewDidAppear () - PullRequest
0 голосов
/ 23 октября 2019

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

Я могу получить данные и добавить в мои локальные массивы с помощью синтаксического анализа. Массивы используют tableView. У меня есть другой ViewController под названием PostDataViewController, который я пытаюсь опубликовать новые данные. Когда я нажимаю кнопку «Post» на PostDataViewController, я немедленно закрываю ViewController. Я вызываю TableViewController.modalPresentationStyle = .fullScreen, чтобы включить viewDidAppear ().

То, что я хочу сделать, это при представлении viewDidAppear () добавлять только новые данные из анализа в мои массивы. Мое временное решение - удалить все данные из всех массивов и снова выполнить начальный запрос. Но похоже, что это тратит много энергии и денег.

Спасибо:)

1 Ответ

1 голос
/ 23 октября 2019

Я делаю нечто подобное через протокол / делегат. Поэтому TableViewController, в котором хранятся все ваши данные, может добавить новую информацию из PostDataViewController, а затем перезагрузить ваш просмотр таблицы, чтобы обновить новые опубликованные данные. Но чтобы получить данные из PostDataViewController, я бы использовал что-то подобное

//Function to make your tableviewcontroller conform into it
protocol PostedDataDelegator{ 
func collectDataToParse(postedData: YourDataType)
}

//In your PostDataViewController
class PostDataViewController { 
let delegate: PostedDataDelegator?

//to send the data from the post button 
func postButtonAction(){ 
delegate.collectDataToParse(postedData: YourDataType)
}


}
//In your TableViewController
class TableViewController: UITableViewController, PostedDataDelegator {

//in your segue function you can have something like
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "Show"
    {
        if let postDataViewController = segue.destinationViewController as? PostDataViewController {
postDataViewController.delegate = self
        }
    }
}

func collectDataToParse(postedData: YourDataType){ 
yourArray.append(postedData)
tableview.reloadTable
}
}

Также я рекомендую смотреть видео Шон Аллен

...