2012-12-08 54 views
0

我想設置我的自定義UICollectionViewCell屬性:定製UICollectionViewCell不能設置proerty價值

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

    // Setup cell identifier 
    static NSString *cellIdentifier = @"IgCell"; 

    PAInterestGraphCell *cell = (PAInterestGraphCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath]; 

    cell.interestCategory = [self.dataArray objectAtIndex:indexPath.row]; 

    // Return the cell 
    return cell; 

} 

PAInterestGraphCell代碼:

@interface PAInterestGraphCell : UICollectionViewCell 

@property (atomic, retain) PAInterestCategory *interestCategory; 

@end 


#import "PAInterestGraphCell.h" 
#import "PAScaleView.h" 

@implementation PAInterestGraphCell 

@synthesize interestCategory; 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     PAScaleView *scaleView = [[PAScaleView alloc] initWithFrame:frame]; 
     scaleView.backgroundColor = [UIColor clearColor]; 
     scaleView.interestCategory = self.interestCategory; 

     [self.contentView addSubview:scaleView]; 
    } 

    return self; 
} 

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

@end 

但是,當我訪問了interestCategory財產它已經失去了所有的價值。

我在這裏錯過了一些明顯的東西嗎?

+0

何時何地爲interestCategory設置了任何值?我發現你在表視圖中這樣做了,但爲什麼你會期望它在init方法中有任何價值? – rdelmar

+0

我將'PAInterestCategory'的8個實例添加到'dataArray'中,並在'cellForItemAtIndexPath'中獲得索引處的一個實例,並將其分配給單元格。 – MartinHN

+0

是的,我明白了,但在你的問題中,你說它在init方法中爲零 - 你爲什麼期望它在那裏有任何價值?那時你還沒有設置它。 – rdelmar

回答

0

@synthesize」存取可能還沒有完全建立之前的「init」方法的結論,所以如果你需要你的「init」方法時可以訪問它們,你需要使用一個靜態變量或伊娃(和然後讓您的「@synthesize」指向它們,並在「init」之外的所有內容中使用「self.」)。

另外,您想要訪問在對象實例化和初始化之前無法設置的「interestCategory」屬性,這似乎毫無意義。或者是你從你的剪貼&粘貼中遺漏的一行代碼?

+0

我們在討論關於訪問interestCategory的哪一行? – MartinHN

+0

你的「init'」方法中的''scaleView.interestCategory = self.interestCategory;'「行。我沒有看到它在'init'方法中被初始化的地方。並且它在你調用''alloc'「&」'init'「之前不能被初始化*,它可以嗎? –

+0

它應該在'cellForItemAtIndexPath'方法中設置:'cell.interestCategory = [self.dataArray objectAtIndex:indexPath.row];' – MartinHN