這是我的代碼。而且昨天它工作得很好。但今天早上,它不起作用。insertRowsAtIndexPaths或reloadData不迴應
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0) {
RSDrug *drug = [[RSDrug alloc]init];
[drugArray insertObject:drug atIndex:0];
NSIndexPath *ip = [NSIndexPath indexPathForRow:1 inSection:0];
[tableView insertRowsAtIndexPaths:@[ip] withRowAnimation:UITableViewRowAnimationAutomatic];
}
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return drugArray.count + 1;
}
我曾嘗試添加一些代碼像beginUpdates/endUpdates,或我刪除insertRowsAtIndexPaths,只需使用reloadData。
但是結果相同。當應用程序運行到insertRowsAtIndexPaths或reloadData時,它卡住了,沒有響應。
所以我需要一些幫助。如何解決這個問題?
發現問題..........一個愚蠢的錯誤
有在添加單元中有兩個UITextFields,它們都具有相同的leftView,我的代碼是這樣的:
UIImageView *leftImage = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"img"]];
field_1.leftView = leftImage;
field_2.leftView = leftImage;
我從來不知道我不能重用leftView。如果我將leftImage設置爲field1,則無法將其設置爲field2。
當我改變爲這個,它再次工作。
field_1.leftView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"img"]];
field_2.leftView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"img"]];
我知道如果我寫indexPathForRow:0它會工作,但它不是我所需要的。默認情況下,我的tableview有一行,這一行作爲一個按鈕,我點擊它,tableview添加一行。並且總是在第2行添加它,所以我必須使用indexPathForRow:1。 – ghysrc
Ahhh ..好的..所以這''drugArray insertObject:drug atIndex:0];'應該是'[drugArray insertObject:drug atIndex:1];''和'[NSIndexPath indexPathForRow:1 inSection:0];'? – 0yeoj
'numberOfRowsInSection return drugArray.count + 1;'默認情況下,drugArray是一個空數組,當點擊第一行時,它會添加一個對象。所以索引是0;我認爲這些索引是正確的,因爲這些代碼以前工作得很好,但我不知道爲什麼它不能工作,我昨天和今天早上沒有做任何改變。 – ghysrc