Я боролся несколько дней из-за какой-то странной переиздания.
Мой tableView немного другого типа, поэтому не может использовать NSFetchControllerDelegate
.
На самом деле три миниатюры в каждой строке, которые можно прикоснуться.
Так что не могу использовать didSelectRowAtIndexPath
.
Проблема после выполнения патча. Первый доступ к NSManagedObject
вернулся с
fetchedResultController objectAt indexPath работает ... но вторая попытка сделать доступ к освобожденному объекту, что означает, что объект уже перевыпущен.
Но чем больше меня сводит с ума, тем же функция в TableViewCellForRowAtIndexPath
всегда работает.
#pragma mark AlbumListViewCellSelectionDelegate ==> my custom delegate method****
- (void)albumContentsTableViewCell:(AlbumLibViewCell *)cell
selectedPhotoAtIndexType:(NSUInteger)index {
//[self fetch];
NSLog(@"select !!!! %i",index);
lastSelectedRow=cell.rowNumber;
//[selectedAssets addObject:[assets objectAtIndex:(lastSelectedRow * imageNoPerRow) + index]];
int selectId =(lastSelectedRow * imageNoPerRow) + index;
if(albumCount >=(selectId+1)){
AlbumTag * album = (AlbumTag *)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:selectId inSection:0]] ;
//scrollView
AutoScrollViewController *detailViewController =[[AutoScrollViewController alloc] init];
detailViewController.hidesBottomBarWhenPushed=YES;
detailViewController.selectedMoments = [album.moments allObjects];==> first work but overrelease every second try
detailViewController.initPhotoNumber = 0;
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
}
та же функция, но каждый раз без проблем
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *CellIdentifier = @"AlbumLibViewCell";
AlbumLibViewCell *cell = (AlbumLibViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
[[NSBundle mainBundle] loadNibNamed:@"AlbumLibViewCell" owner:self options:nil];
cell = tmpCell;
tmpCell = nil;
}
cell.backgroundColor =[UIColor blackColor];
cell.rowNumber = indexPath.row;
cell.selectionDelegate = self;
// Configure the cell...
NSUInteger firstPhotoInCell = indexPath.row * imageNoPerRow;
NSUInteger lastPhotoInCell = firstPhotoInCell + imageNoPerRow;
if (albumCount <= firstPhotoInCell) {
NSLog(@"We are out of range, asking to start with photo %d but we only have %d", firstPhotoInCell, albumCount);
return nil;
}
NSUInteger currentPhotoIndex = 0;
NSUInteger lastPhotoIndex = MIN(lastPhotoInCell, albumCount);
for (firstPhotoInCell ; firstPhotoInCell + currentPhotoIndex < lastPhotoIndex ; currentPhotoIndex++) {
AlbumTag *albumCell = (AlbumTag *)[fetchedResultsController objectAtIndexPath:[NSIndexPath indexPathForRow:firstPhotoInCell + currentPhotoIndex inSection:0]];
UIImage *thumbnail = albumCell.rpeMomentThumbnail;
NSArray *moments = [albumCell.moments allObjects]; ===> every time works fine
Может помочь любая идея для этой ситуации
заранее все ценю.