我正在尝试使用自定义UITableViewCell构建一个表,但是当第一个单元格转到顶部(即隐藏)时滚动,应用程序收到此错误(EXE_BAD_ACCESS(code=1,address = 0x14004122))
并且应用程序崩溃在这里,我从中获取数据字典并将其加载到表格视图。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cell = (uploadCustomCell *)[tabelView1 dequeueReusableCellWithIdentifier:@"cell"];
[cell setSelectionStyle:UITableViewCellEditingStyleNone];
if (cell == nil) {
[[NSBundle mainBundle]loadNibNamed:@"uploadCustomCell" owner:self options:nil];
cell = (uploadCustomCell *)self.uploadCustomcell;
}
saveBtnCcell.hidden = YES;
cell.textNamefield.hidden = YES;
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
[cell.defaultSwitch setEnabled:NO];
NSMutableArray *dictionary = [contents objectAtIndex:indexPath.row];
NSLog(@"dict dict :%@",dictionary);
//
cell.nameLabelCell.text = [dictionary valueForKey:@"VideoName"];
cell.userName.text = [dictionary valueForKey:@"User"];
NSString *defaultVideo = [dictionary valueForKey:@"DefaultVideo"];
if ([defaultVideo isEqualToString:@"1"]) {
[cell.defaultSwitch setOn:YES animated:YES];
}
else {
[cell.defaultSwitch setOn:NO animated:YES];
}
[cell.defaultSwitch addTarget:self action:@selector(setState:) forControlEvents:UIControlEventValueChanged];
cell.thumbImg.image = [arrayimage objectAtIndex:indexPath.row];
VideoNameTextField.hidden = YES;
return cell;
}
- (void)setState:(id)sender {
state = [sender isOn];
// NSString *rez = state == YES ? @"YES" : @"NO";
NSLog(@"state.........:%d",state);
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"height:%f",uploadCustomcell.frame.size.height);
return 207;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSMutableArray *dictionary = [contents objectAtIndex:indexPath.row];
NSLog(@"Dictionary:%@",dictionary);
NSLog(@"indexpath:%@",indexPath);
//
NSLog(@"at index%d obj:%@",indexPath.row,dictionary);
NSString *nameDetails = [dictionary valueForKey:@"VideoName"];
guid = [dictionary valueForKey:@"GUID"];
detailsNameLbl.text = nameDetails;
detailsVehImg.image = [arrayimage objectAtIndex:indexPath.row];;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:
(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[contents removeObjectAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
答案 0 :(得分:1)
我认为问题出在这里 替换此行:
cell = (uploadCustomCell *)[tabelView1 dequeueReusableCellWithIdentifier:@"cell"];
由此如下:
cell = (uploadCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"cell"];
答案 1 :(得分:1)
使用这样的代码:
static NSString *cellIdentifier = @"cell";
// Try to retrieve from the table view a now-unused cell with the given identifier.
uploadCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
// If no cell is available, create a new one using the given identifier.
if (cell == nil)
{
NSLog(@"cell allocated");
// Use the default cell style.
cell = [[uploadCustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"uploadCustomCell"
owner:self options:nil];
cell = [nib objectAtIndex:0];
cell.selectionStyle=UITableViewCellSelectionStyleNone;
}
// Add your code here
return cell;
}
希望它对你有所帮助。