У меня есть один ViewController, который содержит 1 SegmentedControl, который имеет три сегмента, и TableView и CollectionView. Когда сегмент выбран, первые два сегмента показывают TableView с двумя различными пользовательскими TableviewCells, а последний показывает CollectionView. Выбор каждого segemet вызывает сетевые функции для загрузки данных для заполнения TableView или CollectionView. Приложение показывает TableView первого сегмента по умолчанию. Проблема в том, что когда я запускаю приложение, приложение вылетает из функции numberOfItemsInSection, поскольку у него нет данных для заполнения. Я думаю, что эта функция называется ресурсом datasource, а свойства делегирования CollectionView устанавливаются как «self» (ViewController). Как мне подойти, чтобы решить эту проблему?UISegmentedControl, содержащий UITableView и UICollectionView
0
A
ответ
1
Итак, вы, вероятно, загружая эти данные в словарь JSON или в массив, так что вы можете сначала установить представление таблиц и сбор, не имеют никакого содержания, как так:
class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate, UICollectionViewDataSource, UICollectionViewDelegate {
// note that I would recommend separating these into extensions on ViewController
var htmlResponses = []()
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return htmlResponses.count
// htmlResponses is empty at this point
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return htmlResponses.count
// htmlResponses is empty at this point
}
}
Затем, когда ваши данные поступают, просто заполните массив htmlResponses
указанными данными и вызовите tableView.reloadData()
и collectionView.reloadData()
для просмотра таблиц и просмотра коллекции соответственно.
Даже если вы не используете массивы для хранения ваших данных, концепция такая же. Используйте пустые элементы, чтобы заполнить ваши представления и перезагрузить их, как только вы узнаете, что данные прибыли с сервера.
Смежные вопросы
- 1. UITableView и UISegmentedControl
- 2. Основные данные, UITableView и UISegmentedControl
- 3. UISegmentedControl с UITableView NSRangeException
- 4. UITableView UITableViewController Detail View и UISegmentedControl как?
- 5. вид, содержащий UITableView и UITabBar
- 6. UISegmentedControl делает UITableView медленным/отстающим?
- 7. Странное поведение UISegmentedControl в UITableView
- 8. UISegmentedControl с UICollectionView Ошибка с коммутатором Заявление
- 9. UITableView to UICollectionView
- 10. UITableView с UICollectionView
- 11. UICollectionView/UITableView Universal App
- 12. UITableView внутри интерфейса UICollectionView.
- 13. Правильный способ повторного использования UITableViewCell, содержащий UICollectionView
- 14. UICollectionView внутри UITableView с динамическим вводом (UICollectionView)
- 15. UITableView внутри UICollectionView
- 16. UICollectionView в UITableview - Получить тег tapped UICollectionView
- 17. Изменить размер UITableViewCell, содержащий UICollectionView
- 18. Преимущество UIScrollView над UITableView и UICollectionView
- 19. UITableView и обновление UICollectionView новых ячеек
- 20. Неверные данные по прокрутке UITableView и UICollectionView
- 21. Обмен кодом между UITableView и UICollectionView
- 22. UICollectionView и перезагрузка UITableView вызывает переупорядочивание ячеек
- 23. Swift: добавление UISegmentedControl/UITextField к динамическому UITableView
- 24. Обнаружение изменений в UISegmentedControl внутри UITableView HeaderView
- 25. UISegmentedControl в статическом UITableView IBOutlet не устанавливается
- 26. UITableView && UICollectionView в одном контроллере?
- 27. Разделить данные в UITableView с помощью UISegmentedControl
- 28. Сделать UICollectionView похожим на UITableView
- 29. Вставить UITableView/UICollectionView в UIScrollView
- 30. iOS Universal App - UITableView/UICollectionView
oh..Thanks. Я забыл, что я объявил эту переменную массива следующим образом. ex) var htmlResponse: [Тип класса]! Я изменил его, и теперь он работает. – woogii