您正在使用Table视图,
我的表视图第一个自定义单元格在滚动时超过了其他单元格
这是我的代码
#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 = UITableViewCellAccessoryNone;
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];
}
答案 0 :(得分:3)
不要重复使用单元格
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:nil];
一切顺利。
答案 1 :(得分:1)
您可以一遍又一遍地向可能重复使用的单元格添加组件。
您需要将创建添加标签等添加到if (!cell) { }
块中,然后才配置这些组件。
找到正确的UI元素的一种方法是通过您在该块中分配的tag
查找它们,另一种方法 - 更优雅的方式 - 是将自定义UITableViewCell
子类与属性一起使用这些元素。
编辑:并在添加后释放这些视图 - 或者您只是泄漏它们。
答案 2 :(得分:0)
我认为细胞的高度不合适。
检查代码。
答案 3 :(得分:0)
您可以使用NSString * identifier = @ [NSString stringWithFormat:@“%d”,indexPath.row]作为单元标识符。它将细胞与其他细胞区分开来。