自定义CollectionViewCell属性为零

时间:2017-04-25 08:15:23

标签: ios objective-c uicollectionview uicollectionviewcell

我正在使用Custom CollectionView Cell实现自定义集合视图。

这是我对CollectionView的实现。

- (void)setUpCollectionView{
    [self.view setNeedsLayout];
    [self.view layoutIfNeeded];

    [self.vwCarCollection setDataSource:self];
    [self.vwCarCollection setDelegate:self];

    [self.vwCarCollection registerClass:[FindMyCarCell class] forCellWithReuseIdentifier:@"FindMyCarCell"];
    [self.vwCarCollection setBackgroundColor:[UIColor redColor]];

    [self.vwCarCollection reloadData];
    [self.vwCarCollection reloadInputViews];
}

我在" ViewDidLoad"。

上调用了此功能

这是我对UICollectionViewDataSource

的实现
- (UICollectionViewCell  *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    FindMyCarCell *cell = (FindMyCarCell *)[self.vwCarCollection dequeueReusableCellWithReuseIdentifier:@"FindMyCarCell" forIndexPath:indexPath];
    cell.vwImgMain.image = [UIImage imageNamed:@"sample_car"];
    cell.lblCarNo.text = @"GH2334343";
    return cell;
}

当我调试我的代码时,单元格实例就像这样

<FindMyCarCell: 0x78645b30; baseClass = UICollectionViewCell; frame = (302 50; 221 180); layer = <CALayer: 0x786a07a0>>

但是当我尝试更新自定义单元格的图像视图时,它只返回我的图像视图为零。 我的实施有什么问题。有谁能建议我?感谢。

3 个答案:

答案 0 :(得分:0)

将图像视图添加到单元格时可能会出现一些错误。如果您已在Storyboard中创建了单元格,则不要在viewDidLoad中注册您的单元格类。而是在Storyboard中设置重用标识符,然后使用自定义集合视图单元类的框架方法将您的图像视图添加到init中。

答案 1 :(得分:0)

尝试调用 viewDidApppear

>> fun = @(theta, xdata) theta(1) + ...
                         (xdata<=theta(2)) .* theta(3) .* xdata + ...
                         (xdata>theta(2)) .* (theta(3) * theta(2) + ...
                                             (theta(3)+theta(4)) .* (xdata-theta(2)))
>> theta = lsqcurvefit(fun, [0; 15; 0; 1], xdata, ydata, [-Inf, -Inf, 0, 0], [])

theta =

   18.1162
   18.1159
    0.0000
    0.9944

答案 2 :(得分:0)

如果您使用的是xib文件,请致电

[self.vwCarCollection registerNib:[UInib nibWithNibName:@"FindMyCarCell" bundle:nil] forCellWithReuseIdentifier:@"FindMyCarCell"];

而不是

[self.vwCarCollection registerClass:[FindMyCarCell class] forCellWithReuseIdentifier:@"FindMyCarCell"];

原因是当您致电registerClass时,您的FindMyCarCell将通过调用initWithFrame进行初始化,而您没有通过这种方式实现init您的imageView。当您调用registerNib时,堆栈调用将通过调用FindMyCarCell来初始化awakeFromNib(因此将创建imageView)。