单击 UIButton 时切换/更改 UICollectionView 中的单元格

Posted

技术标签:

【中文标题】单击 UIButton 时切换/更改 UICollectionView 中的单元格【英文标题】:Switch/Change the Cells in UICollectionView on click of a UIButton 【发布时间】:2013-06-12 13:31:39 【问题描述】:

问题是我有一个UICollectionView,并且我有一个从UICollectionViewCell 继承的自定义单元格。现在我在UICollectionView 上拥有的是左右两个按钮,当我单击右键时,单元格应该会更改,并且下一个应该出现在图片中。单元格有一个 TextView。单击右键时,下一个单元格(带有 textview)应该在图片中。类似地,单击左侧应该显示上一个。

谢谢和最好的问候。

CellforRow:

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

    if (collectionView == self.myCV) 
        myCollectionView *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MY_CELL" forIndexPath:indexPath];

        if (cell == nil)
        
            NSArray *xibPath = [[NSBundle mainBundle] loadNibNamed:@"myCollectionView" owner:self options:nil];
            cell = [xibPath objectAtIndex:0];
        
        return cell;
    
    else if (collectionView == self.myCV2)
    
        myCC2 *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"MY_CELL2" forIndexPath:indexPath];

        if (cell == nil)
        
            NSArray *xibPath = [[NSBundle mainBundle] loadNibNamed:@"myCC2" owner:self options:nil];
            cell = [xibPath objectAtIndex:0];
        
        return cell;
    
    return 0;

【问题讨论】:

【参考方案1】:
-(void)moveCell:(UIButton*)sender

    if (sender.tag==0) 
        //move left
        if (count>0) 
            count--;
            NSLog(@"count == %i",count);
            [self snapToCellAtIndex:count withAnimation:YES];//paas index here to move to.
        
    else
        //move right
        if (count<noOfCells-1) 
            count++;
            NSLog(@"count == %i",count);
            [self snapToCellAtIndex:count withAnimation:YES];//paas index here to move to.
        
    


- (void) snapToCellAtIndex:(NSInteger)index withAnimation:(BOOL) animated

    NSIndexPath *IndexPath = [NSIndexPath indexPathForRow:index inSection:0];
    UICollectionViewCell *cell= [_myCollectionView cellForItemAtIndexPath:IndexPath];
    [_myCollectionView scrollToItemAtIndexPath:IndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:animated];
    UITextView *txtView=(UITextView*)[cell viewWithTag:21];
    [txtView becomeFirstResponder]; //in current cell with index

在此行使用您的自定义单元格类型

UICollectionViewCell *cell= [collectionView cellForItemAtIndexPath:IndexPath];

希望这会有所帮助

【讨论】:

你可以像tableView一样使用collectionView cellforrowatIndexPath轻松获取cell 非常感谢您的努力。 +1

以上是关于单击 UIButton 时切换/更改 UICollectionView 中的单元格的主要内容,如果未能解决你的问题,请参考以下文章

单击时更改 UIButton 文本

Swift:如何在单击提交按钮时更改 UIButton 图像

在 UITableView 中单击时更改 UIButton 颜色和文本

单击时在 uicollectionviewcell 中切换图像

UIPageControl - 单击按钮更改页面

想要在单击相同的 UIButton 时从 UITableViewCell 更改正确的 UIButton 图像