2

ストーリーボード、タブ バー、XCode 4.5 を使用した iPad アプリがあります。私のシーンの 1 つは、左上の象限に UITableView があり、右上の象限にラベルと UITextBoxes があります。

2 番目のタブをクリックすると、上記のシーンに移動します。これはコードです:

- (void)viewDidLoad  {

    [super viewDidLoad];

    [self.collectionView registerClass:[Cell class] forCellWithReuseIdentifier:@"MY_CELL"];
}

-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {

    return 4;
}

- (NSInteger)collectionView:(UICollectionView *)view numberOfItemsInSection:(NSInteger)section {

    return 4;
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath; {

    Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath];
    cell.label.text = [NSString stringWithFormat:@"%d",indexPath.item];
    return cell;
}

これはインターフェース定義です:

@interface ClientViewController : UIViewController <UICollectionViewDelegate, UICollectionViewDataSource> {

}

これはエラーです:

*キャッチされない例外 'NSInvalidArgumentException' によりアプリを終了します。理由: '-[UIView collectionView:numberOfItemsInSection:]: 認識されないセレクターがインスタンス 0x7d925b0 に送信されました'

ご覧のとおり、numberOfSectionsInCollectionView にも同じコードを使用しました。SO と Google を調査しましたが、該当するものは何も見つかりませんでした。

私は何を間違っていますか?

4

1 に答える 1

5

設定するデリゲートは 2 つあります。1 つは 、delegateもう 1 つはdataSourceです。通常、どちらもビュー コントローラを指すように設定する必要があります (つまり、selfほとんどの場合)。

于 2012-11-18T20:49:06.623 に答える