我有一个在iOS6中正常运行的自定义表格单元格。
在iOS5中,当带有表格的屏幕导航到错误
时,应用程序崩溃 *** Assertion failure in -[ThemedTableView _createPreparedCellForGlobalRow:withIndexPath:], /SourceCache/UIKit_Sim/UIKit-1912.3/UITableView.m:6072
在以下一行
self.titleLabel.shadowOffset = CGSizeMake(0.0, 1.0);
在其中一个表格单元格使用的自定义UIButton的awakeFromNib方法中。
似乎在iOS5中,在cellForRowAtIndexPath中创建的一个单元格返回nil,而自定义单元格的方法如 - (id)initWithStyle:(UITableViewCellStyle)样式reuseIdentifier:(NSString *)reuseIdentifier,并且未调用awakeFromNib。
在tableview控制器中我使用
nib = [UINib nibWithNibName:@"AboutYouTextFieldQuestionCell" bundle:nil];
[[self tableView] registerNib:nib forCellReuseIdentifier:kTextFieldQuestionCell];
以下是用于创建单元格的代码
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSDictionary *questionDict = [self.questions objectAtIndex:indexPath.section];
NSString *questionType = [questionDict objectForKey:@"questiontype"];
if ([questionType isEqualToString:@"textfield"])
{
AboutYouTextFieldQuestionCell *textCell = [tableView dequeueReusableCellWithIdentifier:kTextFieldQuestionCell];
textCell.backgroundColor = [UIColor whiteColor];
textCell.delegate = self;
NSArray *answersArray = [questionDict objectForKey:@"answers"];
NSDictionary *questionDictionary = [answersArray objectAtIndex:indexPath.row];
textCell.questionlLabel.text = [questionDictionary objectForKey:@"questiontitle"];
NSString *keyString = [questionDictionary objectForKey:@"questionkey"];
if ([self.aboutYouAnswers objectForKey:keyString]) {
textCell.tf.text = [[self.aboutYouAnswers objectForKey:keyString] stringValue];
} else {
textCell.tf.text = nil;
}
return textCell;
}
....