我做了重大更改併爲TableView單元格設置了自定義類別。不理解重用表格視圖單元格
Cell.h
#import <UIKit/UIKit.h>
@interface Cell : UITableViewCell
@property (nonatomic, retain) UILabel *month;
@property (nonatomic, retain) UILabel *date;
@end
Cell.m
#import "Cell.h"
@implementation Cell
@synthesize date, month;
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
// Initialization code
}
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.imageView.frame = CGRectMake(1,1,69,69);
float limgW = self.imageView.image.size.width;
if(limgW > 0) {
UIFont *cellFont3 = [UIFont fontWithName:@"ArialRoundedMTBold" size:9];
UIFont *cellFont4 = [UIFont fontWithName:@"ArialRoundedMTBold" size:18];
self.textLabel.frame = CGRectMake(82,0,228,53);
self.detailTextLabel.frame = CGRectMake(82, 20, 228, 53);
self.month = [[UILabel alloc] initWithFrame:CGRectMake(8, 10, 53, 21)];
self.month.font = cellFont3;
self.month.textAlignment = UITextAlignmentCenter;
self.month.backgroundColor = [UIColor clearColor];
self.date = [[UILabel alloc] initWithFrame:CGRectMake(11, 21, 50, 45)];
self.date.backgroundColor = [UIColor clearColor];
self.date.font = cellFont4;
self.date.textAlignment = UITextAlignmentCenter;
}
}
@end
然後在我的TableView代碼:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[Cell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
NSDateFormatter * dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setTimeZone:[NSTimeZone localTimeZone]];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MM"];
NSString *monthfromdate = [formatter stringFromDate:entry.articleDate];
NSLog(@"%@", monthfromdate);
[formatter release];
NSDateFormatter *formatter2 = [[NSDateFormatter alloc] init];
[formatter2 setDateFormat:@"dd"];
NSString *datefromdate = [formatter2 stringFromDate:entry.articleDate];
NSLog(@"%@", datefromdate);
[formatter2 release];
if ([monthfromdate isEqualToString:@"01"]) {
self.currentmonth = @"January";
}
if ([monthfromdate isEqualToString:@"02"]) {
self.currentmonth = @"February";
}
if ([monthfromdate isEqualToString:@"03"]) {
self.currentmonth = @"March";
}
if ([monthfromdate isEqualToString:@"04"]) {
self.currentmonth = @"April";
}
if ([monthfromdate isEqualToString:@"05"]) {
self.currentmonth = @"May";
}
if ([monthfromdate isEqualToString:@"06"]) {
self.currentmonth = @"June";
}
if ([monthfromdate isEqualToString:@"07"]) {
self.currentmonth = @"July";
}
if ([monthfromdate isEqualToString:@"08"]) {
self.currentmonth = @"August";
}
if ([monthfromdate isEqualToString:@"09"]) {
self.currentmonth = @"September";
}
if ([monthfromdate isEqualToString:@"10"]) {
self.currentmonth = @"October";
}
if ([monthfromdate isEqualToString:@"11"]) {
self.currentmonth = @"November";
}
if ([monthfromdate isEqualToString:@"12"]) {
self.currentmonth = @"December";
}
NSString *currentday = datefromdate;
NSString *articleDateString = [dateFormatter stringFromDate:entry.articleDate];
UIFont *cellFont = [UIFont fontWithName:@"ArialRoundedMTBold" size:15];
UIFont *cellFont2 = [UIFont fontWithName:@"ArialRoundedMTBold" size:12];
cell.imageView.image = [UIImage imageNamed:@"calendar1.png"];
cell.imageView.contentMode = UIViewContentModeScaleAspectFit;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@ - %@", articleDateString, entry.blogTitle];
cell.detailTextLabel.textColor = [UIColor grayColor];
cell.detailTextLabel.font = cellFont2;
cell.textLabel.text = entry.articleTitle;
cell.textLabel.font = cellFont;
cell.month.text = currentmonth;
cell.date.text = currentday;
return cell;
}
這解決了重複的問題,或標籤被寫在上面彼此,但只有cell.textLabel顯示任何東西。 detailTextLabel或我設置的其他2個標籤上沒有顯示任何內容。
我要做的第一件事就是檢查你的數據源。這可能是由於您解析提要和創建數據模型時發生的錯誤。換句話說,查看條目數組並確保它實際上沒有那些重複條目。如果確實如此,那麼你的tablview代碼是正確的,問題可能出現在你的解析器中。 – bennythemink
@bennythemink數據源正確。 – user717452
好吧,快速的問題,然後澄清問題,是10月14日在您的數據源中的最後一個條目的入口,還是在您的數據源中有三個隱藏/未顯示在第29,30和03單元格中的三個條目? – bennythemink