开发者

iPhone: custom cell is overlaping with each other

hi i am working on Table view,

my Table view first custom cell is over ride other cell when Scrolling

this is my code

#import UIKit/UIKit.h 

@interface MyTweetViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> {

IBOutlet  UITableView *tweetsTableView;

NSMutableArray *tweetArray;

}

@property (nonatomic, retain) IBOutlet  UITableView *tweetsTableView;

@end

#import "MyTweetViewController.h"

@implementation MyTweetViewController

@synthesize  tweetsTableView;

- (void)viewDidLoad {

         tweetArray = [[NSMutableArray alloc] init];

    [tweetsTableView setBackgroundColor:[UIColor clearColor]];

    [super viewDidLoad];
}

#pragma mark -
#pragma mark Table view data source

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {

    // Return the number of sections.

    return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

 // Return the number of rows in the section.

    return [tweetArray count];

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return 80;

}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

{

    [cell setBackgroundColor:[UIColor clearColor]];

}


 //Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

     static NSString *identifier = @"Cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];


if(!cell) {


        cell = [[UITableViewCell alloc] initWithStyle:UITableViewStyleGrouped reuseIdentifier:identifier];

        cell.selectionStyle = UITableViewCellSelectionStyleNone;

    }

cell.accessoryType = UITableV开发者_开发技巧iewCellAccessoryNone;

UILabel * name  = [[UILabel alloc]initWithFrame:CGRectMake(72,3,242,15)];

name.text   = (NSString*)[(Tweet*)[tweetArray objectAtIndex:indexPath.row] userName];

[name setFont:[UIFont fontWithName:@"Helvetica" size:14]];

    name.textColor=[UIColor colorWithRed:250 green:250 blue:210 alpha:0.5];

    [name setBackgroundColor:[UIColor clearColor]];

    UILabel * tweetLabel  = [[UILabel alloc]initWithFrame:CGRectMake(72,20,242,60)];

    tweetLabel.text   = (NSString*)[(Tweet*)[tweetArray objectAtIndex:indexPath.row] tweet];

tweetLabel.numberOfLines = 3;

    tweetLabel.textColor=[UIColor colorWithRed:252 green:148 blue:31 alpha:1];

    [tweetLabel setFont:[UIFont fontWithName:@"Helvetica" size:12]];

    [tweetLabel setBackgroundColor:[UIColor clearColor]];

     NSLog(@" lblUserTweet : %@ ",name.text);

    UIImageView *myImage = [[UIImageView alloc]initWithFrame:CGRectMake(6,3,58,49)];

NSURL *url = [NSURL URLWithString:[(Tweet*)[tweetArray objectAtIndex:indexPath.row] image_url]];

NSData *data = [NSData dataWithContentsOfURL:url];

    [myImage setImage: [UIImage imageWithData:data]];

[cell.contentView addSubview:myImage];

    [cell.contentView addSubview:tweetLabel];

    [cell.contentView addSubview:name];


    return cell;

}

- (void)dealloc {

    [tweetsTableView release];

    [tweetArray release];

        [super dealloc];
}


Don't reuse the cell

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];

All the best.


You add components to your potentially reused cell over and over again.

You need to move the creation add adding of labels etc. into the if (!cell) { } block and only configure those components afterwards.

One way to find the correct UI elements is to look them up by a tag which you assign in that block, another - more elegant way - is to use a custom UITableViewCell subclass altogether with properties to those elements.

Edit: And release those views after adding them - or you will just leak them.


I think that the height of the cell is not proper.

Check the code.


you can use NSString *identifier = @[NSString stringWithFormat:@"%d",indexPath.row] as cell identfier. It differentiates the cell from other cell.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜