Вид XCode 6 UICollectionview с тегом не работает

Кажется, XCode 6 отличается в использовании viewwithtags от XCode 5.

Я использую следующий код в XCode 6 с раскадровками. Создано 50 ячеек, но метка не видна. Все настроено правильно, как тег и т. Д. Если я использую "старый" способ XCode 5, чтобы сделать это с помощью Классифицированной ячейки "Регистрация", то это похоже на iOS 7, но в iOS 8 данные не передается на ярлык, пока я не начну прокручивать.

static NSString * const reuseIdentifier = @"MyCell";

- (void)viewDidLoad {
    [super viewDidLoad];

    // Register cell classes
    [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];

}

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {
    return 1;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return 50;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:102];    
    nameLabel.text = @"Hello World";
    nameLabel.textColor = [UIColor whiteColor];

    cell.backgroundColor = [UIColor blueColor];

    return cell;
}

Обновленный ответ, поскольку это работает, но под iOS 8 первая ячейка просто не будет отображать контент. Только после прокрутки вверх и вниз содержимое загружается на ярлык.

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *identifier = @"Cell";

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];

    UILabel *nameLabel = (UILabel *)[cell viewWithTag:102];    
    nameLabel.text = @"Hello World";
    nameLabel.textColor = [UIColor whiteColor];

    cell.backgroundColor = [UIColor blueColor];

    return cell;
}

Скриншоты здесь:

https://www.dropbox.com/s/xs6gbvz3d04e4hv/Bildschirmfoto%202014-09-21%20um%2023.08.18.png?dl=0 https://www.dropbox.com/s/tp67rznggi5pcwt/Bildschirmfoto%202014-09-21%20um%2023.10.06.png?dl=0

2 ответа

Решение

Я нашел решение сделать это так, как делал раньше. Удалите строку, чтобы зарегистрировать ячейку, и поместите reuseIdentifier там, где вы обрабатываете ячейку. Извините за мой поздний ответ на это

У меня была похожая проблема, когда я использовал бета-версию Xcode 6.3 и IOS 8. Я решил ее следующим образом. Сначала выберите представление и отключите классы размера в раскадровке. Затем очистите и соберите приложение. После этого включите классы размеров. Это будет работать сейчас.

Другие вопросы по тегам