1

UICollectionViewDataSource と UICollectionViewDelegate を委任する UICollectionViewController があります。私のコレクション ビューには、複数行のデータを含む 2 つのセクションが表示され、正常に動作します。

SWOHighScoreHeader クラスで UICollectionReusableView をサブクラス化するセクション ヘッダー (IB Attributes Inspector -> Accessories 内) を作成しました。

@interface SWOHighScoreHeader : UICollectionReusableView
@property (strong, nonatomic) IBOutlet UILabel *hiScoreHead;
@end

このクラス (SWOHighScoreHeader) を IB の UICollectionReusableView のカスタム クラスとして設定します。

UICollectionViewController では、次のメソッドを使用します。

-(UICollectionReusableView*)collectionView:(UICollectionView*)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{

SWOHighScoreHeader *highScoreHeaderView = nil;

if ([kind isEqual:UICollectionElementKindSectionHeader]) {
    highScoreHeaderView = [collectionView dequeueReusableSupplementaryViewOfKind:kind
                                                             withReuseIdentifier:@"highScoreTableHead"
                                                                    forIndexPath:indexPath];
}

return highScoreHeaderView;
}

識別子highScoreTableHeadは、IB で UICollectionReusableView Collection Reusable View Identifier として設定されます。

この段階では、デフォルトのラベル テキストが表示されますが、セクション ヘッダーは正しく表示されます。

IBOutlet UILabel hiScoreHeadプロパティを IB のアウトレットに接続すると、問題が発生します。これを行うと、プログラムは次のようにクラッシュします。

Interface Builder ファイル内の不明なクラス SWOHighScoreHeader。

** * キャッチされない例外 'NSUnknownKeyException' が原因でアプリを終了しています。理由: '[ setValue:forUndefinedKey:]: このクラスは、キー submitButton のキー値コーディングに準拠していません。

コンセント接続を削除して再接続しようとしましたが、まだ何もしません。私が間違っているアイデアはありますか?

4

3 に答える 3

0

IBOutlets ie の代わりに Tags を使用してこれを解決しました

UILabel *hiScoreHeader = (UILabel *)[highScoreHeaderView viewWithTag:101];
hiScoreHeader.text = @"Header Text";

IBOutlets が機能しない理由はわかりませんが、少なくとも解決策はあります。

于 2015-04-02T20:29:01.443 に答える