在片刻我有以下课程:
我的问题是我的自定义单元格类“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];
.
.
.
.
以下是我的xib文件中的一些屏幕截图,以获取更多信息:
我的GTNewsTableViewController:
GTNewsCustomCell(FilesOwner):
GTNewsCustomCell(查看):
GTNewsCustomCell:
答案 0 :(得分: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;
}
答案 1 :(得分: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;
}