Swift UITableView reloadData в закрытии

Если вы используете эту функцию для генерации версии HTML5 datepicker для браузеров, формат даты должен быть yyyy-MM-dd (формат ISO). Используя TextBoxFor(), он должен быть

@Html.TextBoxFor(m => m.InitialDate, "{0:yyyy-MM-dd}", new { @class = "form-control", type = "date" })

. В качестве альтернативы добавьте следующие атрибуты к свойству

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public Nullable<System.DateTime> InitialDate { get; set; }

и в представлении используйте

@Html.EditorFor(m => m.InitialDate)

Обратите внимание, что это добавляет атрибут type="date"

29
задан Shruti Thombre 11 December 2018 в 12:47
поделиться

5 ответов

UIKit не является поточно-ориентированным. Пользовательский интерфейс должен обновляться только из основного потока:

dispatch_async(dispatch_get_main_queue()) {
    self.tableView.reloadData()
}

Обновление . В Swift 3 и позже используйте:

DispatchQueue.main.async {
    self.tableView.reloadData()
}
80
ответ дан Kirsteins 11 December 2018 в 12:47
поделиться

Вы также можете перезагрузить UITableView следующим образом

self.tblMainTable.performSelectorOnMainThread(Selector("reloadData"), withObject: nil, waitUntilDone: true)
4
ответ дан Anand Suthar 11 December 2018 в 12:47
поделиться

В Swift 3 используйте

DispatchQueue.main.async {
    self.tableView.reloadData()
}
2
ответ дан Sal 11 December 2018 в 12:47
поделиться

SWIFT 3:

OperationQueue.main.addOperation ({
     self.tableView.reloadData()
})
1
ответ дан Maksim Kniazev 11 December 2018 в 12:47
поделиться

Вы также можете обновить основной поток, используя NSOperationQueue.mainQueue(). Для многопоточности NSOperationQueue - отличный инструмент.

Один из способов это можно записать:

NSOperationQueue.mainQueue().addOperationWithBlock({
     self.tableView.reloadData()       
})

Обновление : DispatchQueue - путь для этого

1
ответ дан bubbaspike 11 December 2018 в 12:47
поделиться