做的是一個UITableView單選的簡單Demo,但是在行選擇的時候出現(xiàn)了EXC_BAD_ACCESS錯誤先上代碼:UITableViewSingleChoiceViewController.h@interface UITableViewSingleChoiceViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>@property(nonatomic,retain)NSIndexPath *oldIndex;@endUITableViewSingleChoiceViewController.m#import "UITableViewSingleChoiceViewController.h"#import "Cell.h" //自定義的一個UITableViewCell@interface UITableViewSingleChoiceViewController ()@end@implementation UITableViewSingleChoiceViewController{ UITableView *table;
}@synthesize oldIndex;
-(void)viewDidLoad
{
[super viewDidLoad];
table=[[UITableView alloc]initWithFrame:self.view.bounds];
table.delegate=self;
table.dataSource=self;
[self.view addSubview:table];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{ return 10;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{ NSArray *nib=[[NSBundle mainBundle]loadNibNamed:@"Cell" owner:self options:nil];
Cell *cell=[nib objectAtIndex:0]; if(indexPath.row==2){
cell.thumbnail.image=[UIImage imageNamed:@"帳號切換"];
oldIndex=indexPath;
}else{
cell.thumbnail.image=[UIImage imageNamed:@"帳號切換2"];
}
cell.label.text=[NSString stringWithFormat:@"tableview cell - %d",indexPath.row+1]; return cell;
}
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{ if([indexPath isEqual:oldIndex]){ NSLog(@"行選擇沒有變");
}else{
Cell *newCell = (Cell *)[tableView cellForRowAtIndexPath:indexPath];
newCell.thumbnail.image=[UIImage imageNamed:@"帳號切換"];
Cell *oldCell = (Cell *)[tableView cellForRowAtIndexPath:oldIndex];
oldCell.thumbnail.image=[UIImage imageNamed:@"帳號切換2"];
oldIndex=indexPath;
}
}@end在 tableView didSelectRowAtIndexPath方法中的第一行就出現(xiàn)了EXC_BAD_ACCESS錯誤信息
2 回答

函數(shù)式編程
TA貢獻1807條經(jīng)驗 獲得超9個贊
看起來是你的oldIndex出了問題。兩個建議
1,用copy來管理oldIndex,并且在調用時使用 self.
@property (nonatomic, copy) NSIndexPath *oldIndex;
NSLog(@"section: %d, row: %d", self.oldIndex.section, self.oldIndex.row);
2,不直接比較NSIndexPath對象
if (indexPath.section == self.oldIndex.section && indexPath.row == self.oldIndex.row) { ;;}
- 2 回答
- 0 關注
- 202 瀏覽
添加回答
舉報
0/150
提交
取消