Я работаю с UITableViewController, и у меня есть функция, которая вызывается при распознавании жеста (проведите пальцем вправо / влево и т. Д.).Я также реализую пользовательский класс ячейки.Внутри функции свипирования у меня есть:
CustomCell* cell = (CustomCell *) [self.tableView cellForRowAtIndexPath:indexPath];
((RKMappableObjectTableItem *)[cell object]).options = YES;
Каждая ячейка имеет связанный с ней объект, который является RKMappableObjectTableItem, имеет два свойства, одно - объект, а другое - BOOL.
@interface RKMappableObjectTableItem : TTTableLinkedItem {
NSObject* _object;
BOOL _options;
}
@property (nonatomic, retain) NSObject* object;
@property (nonatomic, assign) BOOL options;
+ (id)itemWithObject:(NSObject*)object;
@end
Теперь, что я пытаюсь сделать с помощью этой функции, - установить для параметров bool значение YES.После выполнения этой функции проведите мой rowHeightForObject
+ (CGFloat)tableView:(UITableView *)tableView rowHeightForObject:(id)item {
if (((RKMappableObjectTableItem *) item).options){
NSLog(@"OPTIONS HEIGHT SET");
}
}
, этот rowHeightForObject находится внутри моей реализации CustomClass.Элементом здесь является RKMappableObjectTableItem.Теоретически адрес памяти элемента, который я здесь получаю, должен совпадать с адресом, полученным с помощью функции смахивания, верно?Но после использования отладчика я проверил, что все по-другому, и поэтому оператор if никогда не выполняется.Вопрос в том, почему это так и как мне это решить?
ОБНОВЛЕНИЕ:
Вот реализация RKMappableObjectTableItem
@implementation RKMappableObjectTableItem
@synthesize object = _object;
@synthesize options = _options;
+ (id)itemWithObject:(NSObject*)object {
RKMappableObjectTableItem* tableItem = [self new];
tableItem.URL = [object URLValueWithName:@"show"];
tableItem.object = object;
return [tableItem autorelease];
}
@end