5

XCode 6 は、viewwithtags の使用が XCode 5 とは異なるようです。

ストーリーボードを使用して XCode 6 で次のコードを使用しています。50個のセルが作成されますが、ラベルは表示されません。タグなどのようにすべてが正しく設定されています。「古い」XCode 5の方法を使用してRegister cell classedでそれを行うと、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

4

2 に答える 2

4

私は以前と同じようにそれを行うことで解決策を見つけました。セルを登録する行を削除し、セルを処理する場所に reuseIdentifier を配置します。この度はお返事が遅くなり申し訳ありません

于 2014-10-16T17:56:39.250 に答える
3

Xcode 6.3ベータとIOS 8を使用していたときに同様の問題が発生しました。このように解決しました。最初にビューを選択し、ストーリーボードのサイズ クラスを無効にします。次に、アプリをクリーンアップしてビルドします。その後、Size Classesを有効にします。今すぐ機能します。

于 2015-05-22T06:34:15.423 に答える