访问 CollectionViewCell

Posted

技术标签:

【中文标题】访问 CollectionViewCell【英文标题】:Accessing CollectionViewCell 【发布时间】:2017-06-08 05:14:24 【问题描述】:

我在collectionviewcell 上添加了一个按钮,一旦用户单击该按钮,它就会调用以下方法,但uviCollectionViewCell 返回nil。

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

    if(collectionView == productCollectionView)
    
        __weak ProductCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cellIdentifier" forIndexPath:indexPath];

        cell.addBtnOutlet.tag = indexPath.row;
        [cell.addBtnOutlet addTarget:self
                        action:@selector(collectionViewCellAddButtonPressed:)
              forControlEvents:UIControlEventTouchUpInside];
    
  return cell;


- (IBAction)collectionViewCellAddButtonPressed:(UIButton *)button
     NSLog(@"Add Button Clicked" );
     // the following is nil
     UICollectionViewCell *uviCollectionCell =  [self.productCollectionView cellForItemAtIndexPath:[NSIndexPath indexPathWithIndex:0]];
 

【问题讨论】:

[NSIndexPath indexPathForRow: button.tag inSection:0],获取完整代码[self.productCollectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow: button.tag inSection:0]]; @anbu-karthik :感谢您编辑答案 @Anbu.Karthik,非常感谢它的工作。我没有添加该部分,我想如果我不设置它,那么它将分配为零作为默认值。请把你的代码作为答案,我会接受它。 @SandeepBhandari - 没关系,我的兄弟, @hotspring - 检查 sandeepbhandari 的答案也一样,接受那个答案 【参考方案1】:

你只需要,

如果您需要一个索引路径等于按钮标签的单元格,那么正如 Karthik 所说,

UICollectionViewCell *uviCollectionCell = [self.collectionView.dataSource collectionView:self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:button.tag inSection:0]];

如果您总是需要索引路径 0,0 处的单元格,请使用

UICollectionViewCell *uviCollectionCell = [self.collectionView.dataSource collectionView:self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];

希望对你有帮助。

【讨论】:

【参考方案2】:

如果你想不带标签,那么

- (IBAction)collectionViewCellAddButtonPressed:(UIButton *)button
    NSLog(@"Add Button Clicked" );
    UICollectionViewCell *uviCollectionCell =  (UICollectionViewCell *)button.superview;

    // if this is return nil then use like below as i am not sure it will retuen contentview for superview
    UICollectionViewCell *uviCollectionCell1 =  (UICollectionViewCell *)button.superview.superview;
 

【讨论】:

以上是关于访问 CollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章

如何设置MSSQL数据库访问用户及访问权限

在SQL数据访问中如何对不同级别设置访问权限

有效访问时间和平均访问时间

一个网站用域名可以访问,用ip不能访问,是为啥?

C盘 位置不可用,无法访问C:\ 拒绝访问

文件拒绝访问无法访问怎么办