Я создал табличный вид в контроллере представления и пытаюсь установить количество строк, которое у него будет. Сумма возвращается из базы данных и затем переходит к правильному методу (см. Ниже). Проблема в том, что количество видимых строк - это не то же количество, которое возвращается из базы данных.UITableView не отображает правильное количество строк
В .viewDidLoad()
self.activeIDs.delegate = self
self.activeIDs.dataSource = self
self.activeIDs.rowHeight = 30
self.activeIDs.reloadData()
Методы, которые должны "настроить" вид таблицы
func tableView(tableView: UITableView,
cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = activeIDs.dequeueReusableCellWithIdentifier("idCell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel!.text = "Test"
return cell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
var numberOfRows = 0 //Assigning default value
SQLHandler.getActiveIDAmount {
amountOfIDs in
numberOfRows = amountOfIDs.description.toInt()!
println(numberOfRows) //Displays correct (database) value
}
return numberOfRows //Returns correct value EDIT: wrong value.
}
Вместо того, чтобы получать желаемое количество строк (4) Я всегда, несмотря на ценность, которую я получаю из базы данных, заканчивается 6? Скриншот таблицы в действии: http://gyazo.com/753f326177dc8cd6b1734f4d19681d71
В чем проблема? Что я делаю не так?
Прошу прощения, но я не понимаю. Если бы я снова вызвал SQLHandler.getActiveIDAmount, не нужно ли мне вводить ту же информацию между {}, как и раньше, чтобы не решить проблему? Я сделал несколько тестов и выяснил, что после возвращения numberOfRows на самом деле было 0, его значение по умолчанию. Вероятно, стоит также упомянуть, что я попытался использовать этот «обработчик завершения», чтобы исправить проблему, когда асинхронная выборка базы данных не вернула правильное значение, предназначенное для строк. – Tice
Вы публикуете в своем вопросе «println (numberOfRows) // Отображает правильное значение (база данных)», поэтому это означает, что ваш запрос базы данных работает, но вы неправильно используете набор данных. Вам не нужно вызывать метод дважды, только один раз, и использовать полученный набор данных для заполнения таблицыView – Icaro
Но разве это не то, что я делаю? (Кстати, я обновил свой вопрос, так как кажется, что возвращаемое значение действительно неверно). Я извлекаю количество строк, которые мне нужны, просто не изменилось значение для numberOfRows (которое возвращается) (numberOfRows = amountOfIDs.description.toInt (!))? – Tice