Ответ 1
Вы установили CollectionViewController
в инспектор идентичности раскадровки?:)
И я попытаюсь вызвать reloadData()
после изменения данных в методе viewDidLoad
.
Надеюсь, что поможет
Я хочу показать как можно больше collectionViewCells
с buttons
, поскольку в моем массиве есть строки. но когда я запускаю симулятор, есть только фон CollectionView
, но не показаны клетки. Что может быть ошибкой?
Вот код из моего CollectionViewController
, который я прикреплял к CollectionView
в main.storyboard:
class CollectionViewController: UICollectionViewController {
var Array = [String]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Array = ["1","2","3","4","5"]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func collectionView(collectionView: UICollectionView, numberOfItemsSection section: Int) -> Int {
return Array.count
}
override func
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var button = cell.viewWithTag(1) as! UIButton
button.titleLabel?.text = Array[indexPath.row]
return cell
}
}
Это соединения контроллера коллекции:
Контроллер просмотра на раскадровке:
Вы установили CollectionViewController
в инспектор идентичности раскадровки?:)
И я попытаюсь вызвать reloadData()
после изменения данных в методе viewDidLoad
.
Надеюсь, что поможет
func layoutCells() {
let layout = UICollectionViewFlowLayout()
layout.sectionInset = UIEdgeInsets(top: 0, left: 10, bottom: 10, right: 10)
layout.minimumInteritemSpacing = 5.0
layout.minimumLineSpacing = 5.0
layout.itemSize = CGSize(width: (UIScreen.mainScreen().bounds.size.width - 40)/3, height: ((UIScreen.mainScreen().bounds.size.width - 40)/3))
collectionView!.collectionViewLayout = layout
}
Попробуйте это. Вызов этой функции из представления действительно загрузился. Я думаю, что проблема в том, что ваша коллекция не выложена правильно.
func viewDidLoad() {
layoutCells()
}
Если это работает, вы можете изменить параметры макета в соответствии с вашими потребностями.
Проблема заключается в том, чтобы установить заголовок на кнопку, используйте следующий код.
override func
collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
var cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! UICollectionViewCell
var button = cell.viewWithTag(1) as! UIButton
//button.titleLabel?.text = Array[indexPath.row]
button.setTitle(Array[indexPath.row], forState: UIControlState.Normal)
return cell
}
Надеюсь, что это поможет
У меня была аналогичная проблема, я обнаружил, что это как-то сдерживает размер моей камеры. Надеюсь, это поможет.
Идеи:
print
внутри вашей функции cellForItemAtIndexPath
, чтобы увидеть, когда-либо вызывается.Array
- фактически тип в Swift. Использование этого в качестве вашего имени переменной может каким-то образом испортить логику. Переименуйте его в Array
(в нижнем регистре). Я считаю, что это наилучшая практика для имен переменных в любом случае.cellForItemAtIndexPath
, например, измените цвет фона. Если это работает, возможно, что-то не так с тем, что вы делаете с тегами.Ваша проблема в
func collectionView(collectionView: UICollectionView, numberOfItemsSection section: Int)
подпись метода. Это неверно. Это должно быть
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
и с override
спецификацией (потому что UICollectionViewController
имеет собственный, вот почему вы получаете пустую коллекцию).
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return Array.count
}
Прежде всего проверьте, что вы использовали этот метод: -
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
return searches.count
}
Делает один поиск в каждом разделе, поэтому количество секций - это счетчик массива запросов. поэтому также мы можем использовать по мере необходимости этот метод. По умолчанию мы можем использовать retuen 1
И Следуйте за шагом в Link для лучшей уступки Проверьте эту ссылку
Выберите UIButton
в раскадровке, проверьте installed
как внизу слева на изображении ниже.
Убедитесь, что для ячейки установлен правильный идентификатор повторного использования.