子类不继承其功能

时间:2015-08-24 01:36:09

标签: objective-c inheritance compiler-errors subclass

我正在尝试创建UICollectionViewLayout的子类,但我无法调用其原始功能,例如itemSize,我收到错误

  

Property' itemSize'没有找到对象' SubClass *'

我错过了什么?

我的代码看起来像这样。

·H

#import <UIKit/UIKit.h>


@interface SubClass : UICollectionViewLayout

@end

的.m

#import "SubClass.h"

@implementation SubClass

- (NSArray *) layoutAttributesForElementsInRect:(CGRect)rect {
    NSArray *answer = [self layoutAttributesForElementsInRect:rect];

    for(int i = 1; i < [answer count]; ++i) {
        UICollectionViewLayoutAttributes *currentLayoutAttributes = answer[i];
        UICollectionViewLayoutAttributes *prevLayoutAttributes = answer[i - 1];
        CGFloat maximumSpacing = 20.0f;
        CGFloat origin = CGRectGetMaxX(prevLayoutAttributes.frame);
        if(origin + maximumSpacing + currentLayoutAttributes.frame.size.width < self.collectionViewContentSize.width) {
            CGRect frame = currentLayoutAttributes.frame;
            frame.origin.x = origin + maximumSpacing;
            currentLayoutAttributes.frame = frame;
        }
    }
    return answer;
}

@end

1 个答案:

答案 0 :(得分:1)

你从错误的类继承。 itemSize属性属于UICollectionViewFlowLayout,而非UICollectionViewLayout

此外,您可能想要致电[super layoutAttributesForElementsInRect:rect]。将该消息发送到self将导致由于无限递归而导致堆栈溢出。