доступ к свойству в пользовательской ячейке из TTTableLinkedItemCell - PullRequest
0 голосов
/ 16 июля 2011

У меня небольшая проблема в реализации моей пользовательской ячейки.По сути, в моем подклассе пользовательских ячеек (подкласс TTTableLinkedItemCell) у меня есть BOOL с именем options.Я хочу иметь возможность использовать эту BOOL внутри моего

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

, но, похоже, это невозможно.Есть ли способ обойти это?

Параметры используются для динамической регулировки высоты ячейки, независимо от того, установлена ​​она или нет

определяет высоту ячейки.

ОБНОВЛЕНИЕ:

Я пробовал следующее в моей функции, которая называется:

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;
    }

Вот как я это настроил:

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

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

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

@end

Однако BOOL всегда НЕТ, как будто он никогда не установлен .. Почему это?Что я сделал не так?

Ответы [ 2 ]

1 голос
/ 17 июля 2011

Способ сделать это - создать собственный класс для TTTableViewItem. Ячейка действительно должна быть «немой» и отображать только информацию, содержащуюся в пользовательском элементе. Поэтому я взял бы ваш options bool и сохранил бы его в подклассе пользовательских элементов, а не в пользовательской ячейке. Вот почему метод существует как метод класса, и вы передаете элемент, а не метод экземпляра.

0 голосов
/ 16 июля 2011

Попробуйте что-то вроде этого:

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