2014-02-10 46 views
1

此刻,我有以下類:自定義單元格是永遠爲零(不使用故事板)

enter image description here

我的問題是,我的自定義單元格類「GTNewsCustomCell」永遠不會被調用,我設置一些斷點在.m文件中,但沒有任何事情發生,比我意識到,在我的「cellForRowAtIndexPath」單元格從來沒有零!

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

static NSString *CellIdentifier1 = @"NewsCell"; 


GTNewsCustomCell *newsCell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier1]; 

if(newsCell == nil){ 

newsCell = [[GTNewsCustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1]; 

} 

newsCell.titleLabel.text = [[self.newsList objectAtIndex:indexPath.section]objectForKey:@"title"]; 
NSAttributedString *attString = [[NSAttributedString alloc]initWithString:[[self.newsList objectAtIndex:indexPath.section]objectForKey:@"previewMessage"]]; 

newsCell.messageTextView.attributedText = attString; 

return newsCell; 

}

這裏是從我的GTNewsCustomCell.m我的代碼的一小部分:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier 
{ 
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
if (self) { 
    // Initialization code 

    self.messageTextView.textColor = [UIColor blackColor]; 
    self.messageTextView.backgroundColor = GTDefaultTextBackgroundColor; 
    self.messageTextView.editable = NO; 
    self.messageTextView.userInteractionEnabled = NO; 

    self.messageTextView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

    NSString *htmlTag = @"<b></b>"; 
    NSString *html = [NSString stringWithFormat:@"%@%@",htmlTag,self.messageTextView.attributedText]; 

    NSData *data = [html dataUsingEncoding:NSUTF8StringEncoding]; 

    CGFloat fontSizeMultiplier = 1.1; 
    CGFloat const DTCoreTextDefaultFontSize = 12.0; 
    NSString * fontName = @"Helvetica"; 
    DTCSSStylesheet* css; 


    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")){ 

     css = [[DTCSSStylesheet alloc] initWithStyleBlock:@"ul li{padding-left: -10px;}"]; 


     NSMutableDictionary *options = [NSMutableDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithFloat:fontSizeMultiplier], NSTextSizeMultiplierDocumentOption, 
             fontName, DTDefaultFontFamily, 
             @"purple", DTDefaultLinkColor, 
             @"red", DTDefaultLinkHighlightColor, 
             css,DTDefaultStyleSheet, 
             [NSNumber numberWithBool:YES],DTUseiOS6Attributes, 
             nil]; 

. 
. 
. 
. 

下面是我的廈門國際銀行文件的一些截圖的詳細資料:

我的GTNewsTableViewController:

enter image description here

GTNewsCustomCell(FilesOwner): enter image description here

GTNewsCustomCell(查看):

enter image description here

GTNewsCustomCell:

enter image description here

+0

如果你在這樣'你的表視圖註冊您的電池可能會發生這種[:[UINib nibWithNibName:_tableView registerNib @ 「CellXib」 捆綁:無] forCellReuseIdentifier:@ 「標識」];'。如果你這樣做,嘗試把所有樣式放在表格單元的-awakeFromNib方法中 – Eugene

+0

是的,我做UINib * nib = [UINib nibWithNibName:@「GTNewsCustomCell」bundle:nil]; [self.tableView registerNib:nib forCellReuseIdentifier:CellIdentifier1];我會測試它.... – Davis

回答

2

好吧,既然你做登記細胞通過tableView的方法registerNib:forCellReuseIdentifier:initWithStyle:reuseIdentifier:不會被調用。如果您想要進行造型,請使用UITableViewCell子類的-awakeFromNib方法。

- (void)awakeFromNib { 
    [super awakeFromNib]; 
    self.messageTextView.textColor = [UIColor blackColor]; 
    self.messageTextView.backgroundColor = GTDefaultTextBackgroundColor; 
    self.messageTextView.editable = NO; 
    self.messageTextView.userInteractionEnabled = NO; 
} 
+0

現在我的自定義單元格被調用,但我的單元格看起來不是我所期望的,有沒有機會使用initWithStyle方法? – Davis

+1

是的,不要用這個:'UINib * nib = [UINib nibWithNibName:@「GTNewsCustomCell」bundle:nil]; [self.tableView registerNib:nib forCellReuseIdentifier:CellIdentifier1];' – Eugene

+0

完美的感謝,沒有它像預期的那樣工作:) – Davis

2

與GTNewsCustomCell(FilesOwner),如果需要,您將無法重用此單元格。你應該讓它成爲NSObject(FileOwner)。並在cellForRowAtIndexPath中加載這個單元格。

通過這種方式,您將獲得與您的自定義單元格相同的樣式。

static NSString *CellIdentifier= @"CustomCell"; 
CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" 
                 owner:self//transfer ownership to self 
                options:nil]; 
    cell = [nibViews objectAtIndex:0]; 
} 

return cell; 
} 
+0

所以你的意思是我應該只從我的自定義單元格中刪除「GTNewsTableViewController」並設置默認值(NSObject)? – Davis

+0

是的,只有當你想在更多的視圖控制器中重用這個單元格。在這種情況下,你甚至不需要這樣做。在cellForRowAtIndexPath中,您直接從nib文件加載您的單元格。 – Pawan

+0

kk感謝您的提示:) – Davis

相關問題