4

私はiOSアプリを書いています。CollectionView ウィンドウがあり、その中にドラッグ アンド ドロップで追加された customCell が 1 つあります。アプリを実行すると、CollectionView ウィンドウのその部分が黒くなります。コレクションの再利用可能なビュー識別子は「ItemCell」に設定されています。クラス 'CustomViewCell' に設定されたカスタム ビュー セル。CollectionView の dataSource とデリゲートは FirstViewController に設定されています。それはコードです:

FirstViewcontroller:
#import <UIKit/UIKit.h>
#import "CustomViewCell.h"

@interface FirstViewController : UIViewController<UICollectionViewDataSource, UICollectionViewDelegate>
@property (weak, nonatomic) IBOutlet UITextField *txtField;

- (IBAction)slideRed:(id)sender;

- (IBAction)slideGreen:(id)sender;
- (IBAction)slideBlue:(id)sender;
- (IBAction)btnAdd:(id)sender;

@end

.m ファイル:

#import "FirstViewController.h"

@interface FirstViewController ()

@end

@implementation FirstViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


}
-(void)viewDidAppear:(BOOL)animated
{

}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

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

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

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

    CustomViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"ItemCell" forIndexPath:indexPath];

    if (cell == nil) {
        cell = [[CustomViewCell alloc]init];
    }


    cell.label.text = @"KitKat";
    //cell.lblMain.textColor = [UIColor whiteColor];
    // cell.backgroundColor = [UIColor blackColor];

    return cell;
}


- (IBAction)slideRed:(id)sender {
}

- (IBAction)slideGreen:(id)sender {
}

- (IBAction)slideBlue:(id)sender {
}

- (IBAction)btnAdd:(id)sender {
}
@end

CustomViewCell:

#import "CustomViewCell.h"

@implementation CustomViewCell
@synthesize label;
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}



@end

そのcollectionViewウィンドウにラベル付きのcustomCellを強制的に表示する方法。しかし、それは単なる黒い窓です。よろしくお願いします

4

2 に答える 2

1

プロセス全体をリンクするのに役立つことがわかった追加のステップ(タイプキャストだと思います)が必要になる場合があります。ここに、比較する私のコードがあります:

- (CustomViewCell *)collectionView:(UICollectionView *)collectionView
              cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *cellIdentifier = @"collectCell";
    CustomViewCell *customCell = (CustomViewCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

    return customCell;
}

www のコメントは正しいです。UI 要素を初期化し、同じメソッドに(id)initWithFrame:(CGRect)frame追加する必要があります。self.contentView addSubview:viewElement例えば:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
    if (self) {
        stringLabel = [[UILabel alloc] init];
        //set the properties of your element
        [self.contentView addSubview:stringLabel];
    }
return self;
} 

これを試してみることもできます:

[collectionView registerClass:[CustomViewCell class] forCellWithReuseIdentifier:@"collectCell"];

于 2014-05-09T05:54:28.170 に答える