Клетката 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 клас] forCellWithReuseIdentifier:@CollectionActiviteCellController];. Между другото, предполагам, че сте настроили правилно своя „CollectionActiviteCellController“, за да разширите „UICollectionViewCell“!   -  person Totumus Maximus    schedule 02.04.2014
comment
Също така е интересно да се разгледа: appcoda.com/ios-programming-uicollectionview-tutorial.   -  person Totumus Maximus    schedule 02.04.2014


Отговори (1)


Свържете изхода dataSource към вашия контролер за преглед чрез код или Storyboard.

Код:

self.collectionView.delegate = self;

Или чрез сториборд ctrl+плъзнете от изгледа на колекцията до жълтия правоъгълник, представляващ обекта на контролера на изгледа, след което изберете „източник на данни“.

Изходи, изтеглени от изглед на колекция

person Michal Shatz    schedule 25.05.2014