UICollectionView - Не отображать ячейки
То, что я пытаюсь достичь, это таблица 3x3 с UICollectionView
. Но при запуске приложения он просто не отображает никаких ячеек. Он отображает цвет фона CollectionView
, хотя (который я установил в синий цвет) Может ли кто-нибудь помочь мне здесь?
То, что я сделал, это создать storyboard
и просто перетащить a CollectionViewController
на него. Этот контроллер также ввел в него вложенный CollectionView
. Затем я просто использовал настройки, чтобы сделать свой фон синим и добавить к нему ячейку, из которой я сделал фиолетовый фон (как для тестирования). Наконец перетащил на него UILabel
. Теперь при запуске он просто отображает синий фон, но не содержит ячеек, хотя они хорошо видны в редакторе. Затем я попытался создать пользовательский UICollectionViewController
, назначить класс CollectionViewController
вместо стандартного класса и сделать то же самое с ячейкой (назначить пользовательский UICollectionViewCell
). В пользовательском UICollectionViewController
я реализовал следующие методы:
-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 9;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"Cell";
AboutYourGoalsMultiSelectionCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];
[[cell goal]setText:@"T"];
return cell;
}
Я установил идентификатор ячейки в ячейку и сделал выходное соединение dataSource и делегировал между CollectionView и пользовательским UICollectionViewController. Все прекрасно компилируется.
Так что я пропущу? Разве он не показал что-то еще, прежде чем делать все эти настройки, просто используя редактор?
![The storyboard editor with all the changes I did]()
Ответы
Ответ 1
Поскольку я не нашел прямого решения, я попытался создать новый проект и сделал те же изменения и настройки, и на удивление, на этот раз все сработало с самого начала. Затем я скопировал раскадровку в свой старый проект, удалил все старые файлы и заменил его на файлы из нового проекта. Пока все работает хорошо. Я понятия не имею, какова была фактическая ошибка, но я рад, что она работает сейчас. Спасибо всем, кто посмотрел мой вопрос!
Ответ 2
См. мой ответ здесь, одним словом, вам нужно удалить эту строку, если вы работаете с раскадрой:
// Register cell classes
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
Ответ 3
Общим источником ошибок является то, что dataSource и делегат не установлены в Outlets
Ответ 4
У вас есть ошибка в первой строке вашего кода.
-(NSIntegear)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
NSIntegear
должен быть NSInteger
.
Не уверен, что проблема связана с тем, что xcode не должен позволять вам запускать проект с этой ошибкой. Я просто попытался выполнить те же самые шаги, которые вы упомянули (без метки), но с приведенной выше коррекцией, и это сработало для меня. Вот скриншот:
![enter image description here]()
Ответ 5
Если вы пытаетесь создать просто простой CollectionViewController (не настраиваемый, то есть по реализации), и ваши ячейки не будут отображаться при запуске приложения, выполните следующие действия: -
- Прежде всего вам нужно создать класс cocoa touch (если не создан) для вашего UICollectionViewController. FILE → NEW → cocoa TOUCH CLASS, затем выберите UICollectionViewController из выпадающего списка подкласса.
- Теперь под секцией инспектора личных данных вашего CollectionViewController добавьте свой класс, выбрав из выпадающего списка Custom Class.
-
Теперь откройте созданный класс и отредактируйте свои методы следующим образом:
override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
//#warning Incomplete method implementation -- Return the number of sections
return 1
}
override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
//#warning Incomplete method implementation -- Return the number of items in the section
return 1
}
-
Только отредактируйте значение "return" (по умолчанию 0) просто напишите количество ячеек/элементов, которые вы хотите отобразить или создали (в этом случае здесь я создал только одну ячейку).
[ios] [swift3] [xcode]