添加头部视图步骤与注意事项

2019-08-12  本文已影响0人  架构师的一小步
 //注册头视图
    [self.catecollection registerNib:[UINib nibWithNibName:xibname bundle:nil] forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:identifier];
//  返回头视图
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath
{
    
   
    
    //如果是头视图
    if ([kind isEqualToString:UICollectionElementKindSectionHeader]) {
        UICollectionReusableView *header=[collectionView dequeueReusableSupplementaryViewOfKind:UICollectionElementKindSectionHeader  withReuseIdentifier:Identifier forIndexPath:indexPath];
        
        for(UIView *view in header.subviews){
            [view removeFromSuperview];
        }
        
        
        //头视图添加view
        [header addSubview:self.headerView];
        return header;
    }
    return nil;
}

懒加载头部试图

- (SsLeaderHeaderVIew *)headerView
{
    if(!_headerView)
    {
        _headerView.backgroundColor=[UIColor whiteColor];
        _headerView =[SsLeaderHeaderVIew xibSsLeaderHeaderVIew];
        _headerView.leaderdelegate=self;
    }
    
    return _headerView;
}

头部视图类

SsLeaderHeaderVIew.h

#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN
@protocol SsLeaderHeaderVIewDelegate <NSObject>

-(void)clickLeader;

@end

//这里着重注意collectionview的头部视图需要继承UICollectionReusableView,在注册头部视图的时候用到,否则注册失败程序崩溃。
@interface SsLeaderHeaderVIew : UICollectionReusableView
@property (nonatomic,strong) id<SsLeaderHeaderVIewDelegate>leaderdelegate;
@property (weak, nonatomic) IBOutlet UIImageView *SsLeaderImage;

@property (weak, nonatomic) IBOutlet UILabel *SsLeaderName;
+(instancetype)xibSsLeaderHeaderVIew;

@end

NS_ASSUME_NONNULL_END

SsLeaderHeaderVIew.m

#import "SsLeaderHeaderVIew.h"

@implementation SsLeaderHeaderVIew
+(instancetype)xibSsLeaderHeaderVIew{
    return (SsLeaderHeaderVIew *)[[[NSBundle mainBundle] loadNibNamed:@"SsLeaderHeaderView" owner:self options:nil] lastObject];
}


- (IBAction)ChooseLeader:(id)sender {
    if (_leaderdelegate && [_leaderdelegate respondsToSelector:@selector(clickLeader)]) {
        [_leaderdelegate clickLeader];
    }
}


- (IBAction)ChooseLeaderSame:(id)sender {
    if (_leaderdelegate && [_leaderdelegate respondsToSelector:@selector(clickLeader)]) {
        [_leaderdelegate clickLeader];
    }
    
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect {
    // Drawing code
}
*/

@end

上一篇下一篇

猜你喜欢

热点阅读