2013-06-07 2 views
0

Я пытаюсь перетащить & отбросить customCell из таблицыView. Я использую UIImageView, который получает изображение customCell, а затем перетаскивает его вокруг представления, но проблема в том, что я не могу получить изображение customCell.Поистине копировать UITableViewCell

CustomCellClass *customCell = [[CustomCellClass alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:[CustomCellClass identifier]]; 

customCell.textLabel.text = "Dragging cell"; 
_draggedImageView.image = customCell.imageRepresentation; 

Но это не работает, оно не получает никакого изображения.

Я также попытался:

CustomCellClass *customCell = [tableView dequeueReusableCellWithIdentifier:[CustomCellClass identifier] forIndexPath:0]; 

customCell.textLabel.text = "Dragging cell"; 
_draggedImageView.image = customCell.imageRepresentation; 

Это работает, но есть проблема. Поскольку я изменяю текст повторно используемого customCell, он тоже изменится в tableView. Мне нужна копия customCell, поэтому я могу иметь правильный макет, изменить то, что хочу в этой копии (в данном случае textLabel ячейки), и добавить его для dragView, и это будет отделено от любого customCell таблицыView.

Любые идеи, как достичь этого?

Спасибо всем.

ответ

0

Я не знаю о существовании -imageRepresentation в UIKit. Обычно для создания изображения из хранилища резервных копий вы должны создать контекст растрового изображения, визуализировать представление внутри этого контекста и, наконец, получить представление изображения. Вы можете создать категории, такие как это:

#import "UIView+RenderVIew.h" 
#import <QuartzCore/QuartzCore.h> 

@implementation UIView (RenderView) 

- (UIImage *) imageByRenderingViewOpaque:(BOOL) yesOrNO { 
    UIGraphicsBeginImageContextWithOptions(self.bounds.size, yesOrNO, 0); 
    [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return resultingImage; 
} 
- (UIImage *) imageByRenderingView{ 
    return [self imageByRenderingViewOpaque:NO]; 
} 

@end 
+0

Это не сработало. Кстати, у customCell в раскадровке есть стиль: «Custom». Я попытался использовать initWithStyle: @ «Custom» в инициализации customCell, но не работает. Есть идеи? – lopes710

+0

Вы не используете его правильно ... Я использую несколько строк кода с 2011 года, всегда работал – Andrea

+0

Хорошо, ребята, поэтому решение было просто использовать этот метод без indexPath: CustomCellClass * customCell = [tableView dequeueReusableCellWithIdentifier: [Идентификатор CustomCellClass]]; Спасибо за ваше время! – lopes710

0

Я сделал это с созданием UIViewCategory, добавить метод к нему, и когда вы хотите изображение любого типа представления (CustomCell) называете эту функцию Она возвращает образ этого конкретного вида.

@implementation UIView (UIViewCategory) 

- (UIImage*)convertInImage { 

    UIGraphicsBeginImageContext(self.bounds.size); 
    [self.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return image; 
} 
@end 

Как использовать:

UIImage *cellImage = [yourCustomCellObj convertInImage]; 

Он работает в моем случае, надеюсь, что это решит вашу проблему.

Смежные вопросы