Окончательное решение состояло из нескольких изменений:
1.) Вместо использования типа int я переключился на NSNumber (благодаря нескольким сделанным комментариям), а также обнаружил, что int является большей проблемойкогда дело доходит до управления памятью, потому что я новичок: (
2.) Вместо установки тега в качестве идентификатора я использовал некоторые концепции, упомянутые в комментариях, и выдвинул весь объект, чтобы получить более подробную информацию об этом, когдаЯ вытащил его из действия позже.
Вот пересмотренный метод, где я устанавливаю объект
if ([self.hats count] > 0) {
Hat* obj = [self.hats objectAtIndex: [indexPath row]];
NSMutableString* fullName = [[NSMutableString alloc] init];
[fullName appendFormat:@"%@", obj.name];
[fullName appendFormat:@" %@", obj.type];
cell.textLabel.text = fullName;
cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;
//add the button to subview hack
UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(50, 5, 50, 25);
[button setTitle:@"Select" forState:UIControlStateNormal];
button.backgroundColor = [UIColor clearColor];
button.adjustsImageWhenHighlighted = YES;
button.tag = obj;
[button addTarget:self action:@selector(action:) forControlEvents:UIControlEventTouchUpInside];
[cell.contentView addSubview:button];
//hack
}
return cell;
}
А вот пересмотренное действие, где я вытаскиваю объект, затем любое свойство, которое я хочу
- (void)action:(id)sender {
Hat* obj = ((UIButton *)sender).tag;
NSNumber* hatId = obj.idValue;
//then if I wanted the actual value of hatId I could do
NSLog(@"print the hatId out as is %d", [hatId intValue]);
}
Последний комментарий по поводу повторного использования кнопки - мне пока не удалось найти проблему с этим, но я заинтересован в другом решении, которое позволило бы мне иметь пользовательскую кнопку в каждой ячейке таблицы.