UICollectionView单元的自定义委托 - 自定义按钮不起作用

时间:2014-08-11 08:22:52

标签: ios objective-c uicollectionview uicollectionviewcell

我有一个来自UIcollectionViewCell的自定义单元格Subclassed。通过代码,我创建了按钮,并在同一类中使用目标方法添加到单元格中。

按钮事件工作正常。但我需要控制到我创建UICollectionView的基本视图。

因此我已经创建了自定义委托来识别点击事件。

---> DBDraggingCell.h文件

@protocol DBDraggingCellDelegate <NSObject>

-(void)chartButtonpressed:(id)sender;
-(void)accountHistoryButtonpressed:(id)sender;
-(void)transactionHistoryButtonpressed:(id)sender;
@end

@interface DBDraggingCell : UICollectionViewCell{

    UIButton *chartButton;
    UIButton *accSummaryButton;
    UIButton *transactionHistory;

}

////////////////////////////////////////////

-(void)chartPressed:(UIButton *)sender{

    [_delegate chartButtonpressed:sender];

}

_delegate returns nil

----> In baseview i have set the delegate 

[self addSubview:_theCollectionView];
_theCollectionView.delegate=self;


Not working


The methods inside the baseview not called

3 个答案:

答案 0 :(得分:5)

您似乎没有在collectionView

中设置单元格委托
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    DBDraggingCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:DBDraggingCellIdentifier forIndexPath:indexPath];

    cell.delegate = self;

    ....

}

答案 1 :(得分:1)

您的基本视图是UICollectionView实例,不是吗? 如果基本视图是UICollectionView,则必须在加载单元格方法- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

中设置DBDraggingCell的委托

例如:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
        DBDraggingCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:YOUR_CELL_IDENTIFIER forIndexPath:indexPath];

        // Set DBDraggingCell' delegate here
        cell.delegate = self;

 }

答案 2 :(得分:0)

确保您的delegate属性对应于您在执行委托方法时使用的变量_delegate。最好在所有地方使用可以帮助您避免这类问题的财产。