自定制 UITableViewHeaderFooterView 加载不上视图问题

来源:互联网 发布:广发手机证券交易软件 编辑:程序博客网 时间:2024/06/05 06:57

用到了类似下图的Header日期加更多的效果,



自定制了一个后发现上面的视图没有加载上去,找了一会儿,终于发现了原因,因为我在用UICollectionReusableView的头视图视图时,我用了下面的方法;


- (instancetype)initWithFrame:(CGRect)frame

{

    self = [superinitWithFrame:frame];

    if (self) {

        

        self.backgroundColor = [UIColorclearColor];

        self.userInteractionEnabled =YES;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(didTapSectionHeader:)];

        [selfaddGestureRecognizer:tap];

        [selfaddSubview:self.sep];

        [selfaddSubview:self.addTime];

        [selfaddSubview:self.more];

        [selfaddSubview:self.rightArrow];

        [selflayoutSubviewsContraits];

        

    }

    returnself;

}

,所以我在用tableView的头视图时候也用了initWithFrame方法,导致没有加载上子视图,

- (instancetype)initWithFrame:(CGRect)frame

{

    self = [superinitWithFrame:frame];

    if (self) {

        

        self.contentView.backgroundColor = [UIColorwhiteColor];

        self.userInteractionEnabled =YES;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(didTapSectionHeader:)];

        [self.contentViewaddGestureRecognizer:tap];

        [self.contentViewaddSubview:self.sep];

        [self.contentViewaddSubview:self.addTime];

        [self.contentViewaddSubview:self.more];

        [self.contentViewaddSubview:self.rightArrow];

        [selflayoutSubviewsContraits];

        

    }

    returnself;

}


去头文件里看了下,用了下面的方法后搞定

//- (instancetype)initWithReuseIdentifier:(nullableNSString *)reuseIdentifierNS_DESIGNATED_INITIALIZER;


- (instancetype)initWithReuseIdentifier:(nullableNSString *)reuseIdentifier {

    

    self = [superinitWithReuseIdentifier:reuseIdentifier];

    if (self) {

        

        self.contentView.backgroundColor = [UIColorwhiteColor];

        self.userInteractionEnabled =YES;

        UITapGestureRecognizer *tap = [[UITapGestureRecognizeralloc] initWithTarget:selfaction:@selector(didTapSectionHeader:)];

        [self.contentViewaddGestureRecognizer:tap];

        [self.contentViewaddSubview:self.sep];

        [self.contentViewaddSubview:self.addTime];

        [self.contentViewaddSubview:self.more];

        [self.contentViewaddSubview:self.rightArrow];

        [selflayoutSubviewsContraits];

        

    }

    returnself;

    

}

所以,tableView的headerfooter用init方法和initWithReuseIdentifier才可以,而initWithFrame方法是不可以的。collectionView的头、尾视图reuseableView则用initWithFrame方法。效果如下






阅读全文
0 0
原创粉丝点击