[解決済み] UICollectionView: 非Nilのレイアウトパラメータで初期化する必要があります。
質問
を追加しました。
UICollectionView
をコードで指定します。
というメッセージが表示され、アプリがクラッシュしてしまいます。
UICollectionView must be initialized with a non-nil layout parameter
.
修正するアイデアはありますか?
CollectionCell
のカスタムクラスです。
UICollectionViewCell
.
@property (nonatomic, strong) UICollectionView* collectionView;
- (void)viewDidLoad
{
[super viewDidLoad];
self.collectionView = [[UICollectionView alloc]init];
[self.collectionView registerClass:[CollectionCell class] forCellWithReuseIdentifier:@"cell"];
UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc]init];
flowLayout.itemSize = CGSizeMake(100, 100);
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
[self.collectionView setCollectionViewLayout:flowLayout];
self.collectionView.frame = CGRectMake(0, 60, 320, 500);
self.collectionView.backgroundColor = [UIColor whiteColor];
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
[self.view addSubview:self.eventCollection];
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 20;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
CollectionCell* cell = [self.eventCollection dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
cell.label.text = [NSString stringWithFormat:@"%d", indexPath.item];
return cell;
}
解決方法は?
クラッシュは、何が問題なのかを明確に教えてくれているのです。
<ブロッククオートUICollectionViewは、非Nilのレイアウトパラメータで初期化する必要があります。
を確認すると
のドキュメントを参照してください。
UICollectionView
であることがわかります。
initWithFrame:collectionViewLayout:
. さらに、そのイニシャライザーのパラメーターの中に、こうあります。
フレーム
コレクションビューのフレーム矩形で、単位はポイントです。フレームの原点は、それを追加する予定のスーパービューからの相対的なものです。このフレームは、初期化中にスーパークラスに渡されます。
レイアウト
項目を整理するために使用するレイアウトオブジェクト。コレクションビューは、指定されたオブジェクトへの強い参照を保存します。 nilであってはならない。
私は
太字
重要な部分です。を使用する必要があります。
initWithFrame:collectionViewLayout:
を初期化するために
UICollectionView
を渡す必要があり、また、非Nilの
UICollectionViewLayout
オブジェクトを作成します。
では、これを解決する一つの方法は、単純に初期化の順番を変えることです。
UICollectionViewFlowLayout* flowLayout = [[UICollectionViewFlowLayout alloc] init];
flowLayout.itemSize = CGSizeMake(100, 100);
[flowLayout setScrollDirection:UICollectionViewScrollDirectionHorizontal];
self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:flowLayout];
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"];
なお、上記の例では、「1.
self.view.frame
のフレームとして使用します。
self.collectionView
. そうでない場合は、代わりに好きなフレームを挿入してください。
関連
-
[解決済み】iOS用のプライベートメッセージUI(受信、送信、作成)フレームワークはありますか?
-
[解決済み] ウィンドウ階層にないビューを持つUIViewControllerでUIViewControllerを表示しようとする
-
[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない
-
[解決済み] CocoaPodsでポッド「Firebase/Core」の互換バージョンが見つからなかった|cloud_firestore, Flutter
-
[解決済み] iOS 9 : ユニバーサルアプリの警告「アプリがフルスクリーンを必要としない限り、すべてのインターフェイスの向きをサポートする必要があります」。
-
[解決済み] SwiftでUIColor patternImageを使用して画像を中心からタイル状に配置する方法
-
[解決済み] BluetoothのロゴはiPhoneのキャラクターとして利用できますか?
-
[解決済み] Unwind segue - インスタンスメソッドのみ @IBAction を宣言でき、ボタンが Exit に接続しない
-
[解決済み] Swift 4 データが正しい形式でないため、読み取ることができませんでした。
-
[解決済み】UICollectionView 自動レイアウトでセルサイズを変更する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Xcode 10.2.1 Command PhaseScriptExecutionが0以外の終了コードで失敗した。
-
[解決済み】arm64アーキテクチャの未定義シンボルについて
-
[解決済み】iOS用のプライベートメッセージUI(受信、送信、作成)フレームワークはありますか?
-
[解決済み】NSURLErrorDomainエラーコードの説明
-
[解決済み] Xcode 10でコマンドCompileSwiftが0以外の終了コードで失敗する [重複] 。
-
[解決済み] iPhoneが使用できません。デバイスを再接続してください
-
[解決済み] SwiftUI vs Interface Builderとストーリーボード【非公開
-
[解決済み] このアクションは完了できませんでした。再試行 (-22421)
-
[解決済み] selector' の引数が '@objc' メソッド、プロパティ、またはイニシャライザを参照していない
-
[解決済み] ナビゲーションアイテムのタイトルカラーを変更する方法