Ячейка UICollectionView исчезает через несколько секунд или при касании экрана

Я разрабатываю свое первое приложение для iPad с Xcode 5.1 на iOS 7.0 и использую UICollectionView.

Вот набросок моей раскадровки

Мой CollectionViewController включается в представление моего исходного контроллера, когда я нажимаю первую вкладку на панели навигации.

Ячейки исчезают через несколько секунд или когда я нажимаю где-нибудь на экране.

Если я поставлю CollectionViewController в качестве начального контроллера представления, с ячейками все в порядке!

Я не понимаю! Нужна помощь, пожалуйста.

#import "ActiviteViewController.h"
#import "AppDelegate.h"
#import "Embarcation.h"
#import "CollectionActiviteCellController.h"

@interface ActiviteViewController ()

@end

@implementation ActiviteViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self; }

- (void) viewWillAppear: (BOOL) animated {
    [super viewWillAppear:animated];
    [[self view] setFrame: CGRectMake(0, 0, 1024, 618)]; }


-(BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {
    return YES; }

- (void)viewDidLoad {
    [super viewDidLoad];
    AppDelegate* appDelegate = [UIApplication sharedApplication].delegate;

    // Fetching Records and saving it in "fetchedRecordsArray" object
    self.embarcationsArray = [appDelegate getAllPayments];
    [self.collectionView reloadData]; }

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated. }

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    // Return the number of sections.
    return 1; }

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    return [self.embarcationsArray count]; }

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
     CollectionActiviteCellController *myCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MonEmbarcation"
forIndexPath:indexPath];

    Embarcation * embarcation = [self.embarcationsArray objectAtIndex:indexPath.row];
    myCell.labelEmbarcation.text = [NSString stringWithFormat:@"%@, %@ ",embarcation.nom,embarcation.etat];

    NSLog([NSString stringWithFormat:@"%@, %@ ",embarcation.nom,embarcation.etat]);

    return myCell; }

/*
#pragma mark - Navigation

// In a storyboard-based application, you will often want to do a
little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller. }
*/

@end

person Thomas Gaillard    schedule 02.04.2014    source источник
comment
Вы правильно настроили источник данных? Вы, вероятно, делаете reloadData где-то, когда массив, который вы используете для заполнения collectionCells, пуст. Также вы зарегистрировали CustomCell? Так или иначе. Опубликуйте весь соответствующий код, касающийся CollectionView   -  person Totumus Maximus    schedule 02.04.2014
comment
Я публикую весь ревенантный код, я пытался удалить reloadData, но ничего не изменилось.   -  person Thomas Gaillard    schedule 02.04.2014
comment
Не нужно удалять reloadData :O! Вам просто нужно проверить статус и данные, которые находятся в вашем 'embarcationsArray'. Можете ли вы заменить '[appDelegate getAllPayments];' с жестко закодированным массивом в качестве эксперимента? Также я не вижу, чтобы вы регистрировали свою ячейку (или упоминали об этом в любом виде), поэтому можете ли вы добавить эту строку в свой метод viewDidLoad? [self.collectionView registerClass:[CollectionActiviteCellController class] forCellWithReuseIdentifier:@CollectionActiviteCellController];. Кстати, я предполагаю, что вы правильно настроили свой «CollectionActiviteCellController», чтобы расширить «UICollectionViewCell»!   -  person Totumus Maximus    schedule 02.04.2014


Ответы (1)


Подключите выход dataSource к контроллеру представления с помощью кода или раскадровки.

Код:

self.collectionView.delegate = self;

Или с помощью раскадровки Ctrl + перетащите из представления коллекции в желтый прямоугольник, представляющий ваш объект контроллера представления, а затем выберите «источник данных».

Выходы перетаскиваются из представления коллекции

person Michal Shatz    schedule 25.05.2014