UIDocument Отваряне за попълване на TableView

Използвам DocumentBrowserViewController в Swift, за да представя документи на ViewController. В ViewController имам tableView за представяне на някои от данните в документа. Когато ViewController е представен, той иска първо да инициализира tableView. Настройките на tableView (напр. func TableView: nbrOfRowsInSection) се задават от данните в документа. Тъй като документът все още не е прочетен, той се проваля.

Имам document.open във ViewWillAppear, който си мислех, че ще се изпълни първи.

Има ли начин да промените този ред?


person jz_    schedule 27.08.2018    source източник


Отговори (1)


Методът viewWillAppear не се изпълнява първи, първият е viewDidLoad. В зависимост от това как инициализирате вашия ViewController, той може да бъде и awakeFromNib.

Но все пак не трябва да се проваля, просто направете нещо подобно на това:

var dataFromDocument: SomeData {
    didSet {
       tableView.reloadData()
    }
}

final public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return dataFromDocument.size
}

След това можете да прочетете данните и да зададете dataFromDocument, когато четенето на документа приключи.

person regina_fallangi    schedule 27.08.2018
comment
Благодаря ти. Преминаването към viewDidLoad не работи по някаква причина. Следното обаче върши работа: return dataFromDocument == nil? 1 : (dataFromDocument?.steps.count)! - person jz_; 27.08.2018
comment
Щеше да е много по-полезно, ако бяхте публикували своя код. Моля, направете го, така човек може да предложи по-добра помощ. - person regina_fallangi; 27.08.2018