2011-07-16 49 views
0

我在實現自定義單元格時遇到了一個小問題。基本上在我的自定義單元格子類(TTTableLinkedItemCell的子類) 我有一個名爲options的BOOL。我想能夠在我的從TTTableLinkedItemCell訪問自定義單元格中的屬性

+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item { 

內使用這個BOOL,但是,似乎這是不可能的。有沒有解決這個問題的方法?

的選項被用來動態地調整單元的高度,無論它的設置或不

定義該單元的高度。

UPDATE:

我試圖在我的函數被調用執行以下操作:

CustomCell* cell = (CustomCell *) [self.tableView cellForRowAtIndexPath:indexPath]; 
((RKMappableObjectTableItem *)[cell object]).options = YES; 

,並在我的rowHeightForObject我:

+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item { 
    float optionsHeight = 0.0; 
if (((RKMappableObjectTableItem *) item).options) 
     optionsHeight = 25.0; 
    } 

下面是我如何設置up:

@interface RKMappableObjectTableItem : TTTableLinkedItem { 
    NSObject* _object; 
    BOOL _options; 
} 

@property (nonatomic, retain) NSObject* object; 
@property (nonatomic, assign) BOOL options; 

+ (id)itemWithObject:(NSObject*)object; 

@end 

但是,BOOL總是NO,就好像它從未設置過。爲什麼這樣? 我做錯了什麼?

回答

1

做到這一點的方法是創建一個自定義類的TTTableViewItem。單元格應該真的是「啞巴」,只顯示包含在自定義項目中的信息。所以我會把你的options bool存儲在自定義項子類中,而不是自定義單元。這就是爲什麼該方法作爲一個類方法存在,並且您傳遞給該項目而不是實例方法。

+0

我想到了這個以及...考慮是否還有其他更漂亮的選項 – adit

+0

這個*是*漂亮的選項。這很容易做到,並從視圖中分離出模型,真正的MVC風格。 – coneybeare

+0

問題是如何從我在TTTableViewController中定義的函數中設置TTTableViewItem中的options屬性?我如何獲得TTTableViewItem? – adit

0

嘗試這樣:

- (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item { 
    BOOL boolValue = [(YourCustomCellClass *)item options]; 
    if (boolValue) { 
     ... 
    } 
    else { 
     ... 
    } 
} 
+0

項目不是自定義單元類,rowHeightForObject在單元實現 – adit