comment utiliser UItableViewCell reuseIdentifier

Je veux utiliser UITableviewCell réutilisation,j'ai un custom UITableViewCell et à l'aide de l'ARC,mon UITableViewCell est différent . mon code est:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
PostCount *post=[listArr objectAtIndex:indexPath.row];
static NSString *CellIdentifier = @"TimeLineViewCell";
TimeLineViewCell *cell = (TimeLineViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell==nil){
cell = [[TimeLineViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellIdentifier11"];
}
cell.tag=indexPath.row+1000;
cell.lab_time.text=[ModelClass intervalSinceNow:post.when btime:0];
cell.delegate=self;
[cell setViewStyle:post];
post=nil;
return cell;
}

vous savez si j'utilise

cell = [[TimeLineViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] 

au lieu

cell = [[TimeLineViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CellIdentifier11"]; 

Ma cellule, toujours à l'erreur de localisation. Pourquoi ne suis-je pas en mesure d'utiliser le même reuseIdentifier. Si j'utilise un autre reuseIdentifier,si ma cellule n'est pas de les réutiliser.

Pour d'autres Viewcontroller points de vue, lorsque la taille de la cellule est la même et j'utilise le même reuseIdentifier tout est ok. Quelqu'un peut-il m'aider avec le problème?

Edit: Ma cellule Personnalisé code:

#import "TimeLineViewCell.h"
@implementation TimeLineViewCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
imageView_t=[[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 40, 40)];
imageView_t.hidden=YES;
imageIcon=[[UIImageView alloc]initWithFrame:CGRectMake(295, 5, 16, 16)];
self.lab_time = [[UILabel alloc] initWithFrame:CGRectMake(210, 5, 80, 20)];
self.lab_time.textColor=[UIColor grayColor];
self.lab_time.font=[UIFont systemFontOfSize:12];
self.lab_time.textAlignment=UITextAlignmentRight;
self.lab_time.backgroundColor=[UIColor clearColor];
whoscreenName = [[UILabel alloc] initWithFrame:CGRectMake(60, 5, 145, 20)];
whoscreenName.textColor=[UIColor blackColor];
whoscreenName.font=[UIFont systemFontOfSize:18];
whoscreenName.lineBreakMode = UILineBreakModeTailTruncation;
whoscreenName.numberOfLines = 0;
whoscreenName.backgroundColor=[UIColor clearColor];
myWhat = [[UITextView alloc] init];
myWhat.textColor=[UIColor blackColor];
myWhat.backgroundColor=[UIColor clearColor];
[myWhat setScrollEnabled:NO];
[myWhat setEditable:NO];
myWhat.dataDetectorTypes=UIDataDetectorTypeLink;
[myWhat setCanCancelContentTouches:NO];
self.myWhaticon=[[UIView alloc]init];
myImageView=[[UIImageView alloc]init];
myImageView.hidden=YES;
myIndicatorView=[[UIActivityIndicatorView alloc ]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
myIndicatorView.hidden=YES;
whoBgView=[[UIImageView alloc]init];
whoBgView.image = [[UIImage imageNamed:@"timeline_rt_border_t.png"] stretchableImageWithLeftCapWidth:130 topCapHeight:7];
whoWhat = [[UITextView alloc] init];
whoWhat.textColor=[UIColor blackColor];
whoWhat.backgroundColor=[UIColor clearColor];
[whoWhat setScrollEnabled:NO];
[whoWhat setEditable:NO];
whoWhat.dataDetectorTypes=UIDataDetectorTypeLink;//url
[whoWhat setCanCancelContentTouches:NO];
whoImageView=[[UIImageView alloc]init];
whoImageView.hidden=YES;
activityIndicatorView=[[UIActivityIndicatorView alloc ]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
activityIndicatorView.hidden=YES;
myWhat.font=[UIFont systemFontOfSize:15];
whoWhat.font=[UIFont systemFontOfSize:14];
}
return self;
}
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
//Configure the view for the selected state
}
- (void)layoutSubviews
{
[super layoutSubviews];
[self addSubview:imageView_t];
[self addSubview:imageIcon];
[self addSubview: self.lab_time];
[self addSubview:whoscreenName];
[self addSubview:myWhat];
[self addSubview:self.myWhaticon];
[self addSubview:myImageView];
[self addSubview:myIndicatorView]; 
[self addSubview:whoBgView];
[whoBgView addSubview:whoWhat];
[whoBgView addSubview:whoImageView];
[whoBgView addSubview: activityIndicatorView];
whoImageView=nil;
whoWhat=nil;
}
-(void)my_imag_btnClick:(UIButton *)btn{
[self.delegate my_imag_btnClick:btn.tag];
}
-(void)who_imag_btnClick:(UIButton *)btn{
NSLog(@"who_imag_btnClick");
[self.delegate who_imag_btnClick:btn.tag];
}
- (void)dealloc
{
imageView_t.image=nil;
imageView_t=nil;
imageIcon.image=nil;
imageIcon=nil;
whoscreenName=nil;
self.lab_time=nil;
whoscreenName=nil;
myWhat=nil;
self.myWhaticon=nil;
myImageView.image=nil;
myImageView=nil;
whoBgView.image=nil;
whoBgView=nil;
whoImageView.image=nil;
whoImageView=nil;
}
-(void)setViewStyle:(PostCount *)post{
//时间
if (self.btime==1) {
self.lab_time.text=[ModelClass intervalSinceNow:post.when btime:1 ];
}else{
self.lab_time.text=[ModelClass intervalSinceNow:post.when btime:0];
}
imageView_t.hidden=NO;
//    imageView_t.isRoundIcon=YES;
imageView_t.layer.cornerRadius = 5;
imageView_t.layer.masksToBounds = YES;
//给图层添加一个有色边框
imageView_t.layer.borderWidth = 0.8;
imageView_t.layer.borderColor = [[UIColor colorWithRed:230.0/255 green:230.0/255 blue:230.0/255 alpha:1.0] CGColor];
if(![GlobalVariable isBlankString:post.who.avatarbig])
{
[imageView_t setImageWithURL:[NSURL URLWithString:post.who.avatarbig]
placeholderImage:[UIImage imageNamed:@"default_user.png"]];
}
else{
imageView_t.image=[UIImage imageNamed:@"default_user.png"];
}
//icon
imageIcon.image=[UIImage imageNamed:[ModelClass returnimage_source:post.source]];
whoscreenName.text=post.who.screenName;
CGSize size_myWhat =[ModelClass heightForTextView:[UIFont systemFontOfSize:15] WithText:post.what weith:250];
myWhat.frame=CGRectMake(50, 25, 250, size_myWhat.height);
myWhat.text=[NSString stringWithFormat:@"%@",post.what];
self.myWhaticon.frame=myWhat.frame;
if(![GlobalVariable isBlankString:post.img_small])
{
CGSize size_myImageView=CGSizeMake(80, 80);
myImageView.frame=CGRectMake(50, 30+size_myWhat.height, size_myImageView.width, 80);
myImageView.hidden=NO;
myIndicatorView.center=myImageView.center;
myIndicatorView.hidden=NO;
[myIndicatorView startAnimating];
__block UIActivityIndicatorView *indicatorView=myIndicatorView;
__block UIImageView *myImage = myImageView;
[myImageView setImageWithURL:[NSURL URLWithString:post.img_small]
placeholderImage:nil
success:^(UIImage *image){
CGRect  sFrame=myImage.frame;
//缩放
CGSize newSize=image.size;
if (newSize.height>80) {
newSize.height=80;
newSize.width=newSize.width*80.0/image.size.height;
}else{
if (newSize.width>80) {
newSize.height=newSize.height *80.0/image.size.width;
newSize.width=80;
}else{//2个都小于80
newSize.height=newSize.height;
newSize.width=newSize.width;
}
}
sFrame.size=newSize;
myImage.frame=sFrame;
indicatorView.hidden=YES;
[indicatorView stopAnimating];
[indicatorView removeFromSuperview];
}
failure:^(NSError *error){
indicatorView.hidden=YES;
[indicatorView stopAnimating];
[indicatorView removeFromSuperview];
}];
UIButton * myImageBtn=[[UIButton alloc]init];
myImageBtn.frame= CGRectMake(50, 30+size_myWhat.height, size_myImageView.width, 80);
[myImageBtn addTarget:self action:@selector(my_imag_btnClick:) forControlEvents:UIControlEventTouchUpInside];
myImageBtn.tag=self.tag-1000;
//       myImageBtn.backgroundColor=[UIColor blueColor];
[self addSubview:myImageBtn ];
}
if ([post.sourceTweet.what length]>0) {
whoWhat.text=[NSString stringWithFormat:@"@%@: %@",post.sourceTweet.who.screenName,post.sourceTweet.what];
}
CGSize size_whoWhat =[ModelClass heightForTextView:[UIFont systemFontOfSize:14] WithText:whoWhat.text weith:250];
whoWhat.frame=CGRectMake(10, 10, 250, size_whoWhat.height);
if(![GlobalVariable isBlankString:post.sourceTweet.img_small])
{
CGSize size_whoImageView=CGSizeMake(80, 80);
whoImageView.frame=CGRectMake(30, 15+size_whoWhat.height, size_whoImageView.width, 80);
whoImageView.hidden=NO;
activityIndicatorView.center=whoImageView.center;
activityIndicatorView.hidden=NO;
[activityIndicatorView startAnimating];
__block UIActivityIndicatorView *indicatorView = activityIndicatorView;
__block UIImageView *whoImage = whoImageView;
[whoImageView setImageWithURL:[NSURL URLWithString:post.sourceTweet.img_small]
placeholderImage:nil
success:^(UIImage *image){
CGRect  sFrame=whoImage.frame;
//缩放
CGSize newSize=image.size;
if (newSize.height>80) {
newSize.height=80;
newSize.width=newSize.width*80.0/image.size.height;
}else{
if (newSize.width>80) {
newSize.height=newSize.height *80.0/image.size.width;
newSize.width=80;
}else{//2个都小于80
newSize.height=newSize.height;
newSize.width=newSize.width;
}
}
sFrame.size=newSize;
whoImage.frame=sFrame;
indicatorView.hidden=YES;
[indicatorView stopAnimating];
[indicatorView removeFromSuperview];
}
failure:^(NSError *error){
indicatorView.hidden=YES;
[indicatorView stopAnimating];
[indicatorView removeFromSuperview];
}];
UIButton * whoImageBtn=[[UIButton alloc]init];
int myimageHeight=0;
if (myImageView.frame.size.height>0) {
myimageHeight=5+80;
}
whoImageBtn.frame=CGRectMake(30+42, 40+size_myWhat.height+size_whoWhat.height+myimageHeight, 80, 80);
whoImageBtn.backgroundColor=[UIColor clearColor];
[whoImageBtn addTarget:self action:@selector(who_imag_btnClick:) forControlEvents:UIControlEventTouchUpInside];
whoImageBtn.tag=self.tag-1000;
[self addSubview:whoImageBtn ];
}
if (size_whoWhat.height<20) {
whoBgView.hidden=YES;
}else{
int myimageHeight=0;
if (myImageView.frame.size.height>0) {
myimageHeight=5+80;
}
whoBgView.frame=CGRectMake(42, 25+size_myWhat.height+myimageHeight, 270, 20+size_whoWhat.height+whoImageView.frame.size.height);
}
}
@end
  • Si vous utilisez de différentes reuseidentifier, votre cellule n'est pas réutilisé, il est toujours de créer une nouvelle cellule. Si vous utilisez le même identifiant, ce qui se passe est la cellule va être réutilisés, dans une telle situation, l'ancien contenu peuvent causer des problèmes. Si vous devez supprimer l'ancien contenu avant d'ajouter de nouvelles valeurs
  • - je ajouter mon code comment faire pour supprimer l'ancien contenu
  • Cette question est incohérente. Le fait qu'il a une prime n'est pas comme par magie le rendre cohérent.
InformationsquelleAutor pengwang | 2013-03-13