CoreData
에서 데이터를로드하는 UITableView
이 있습니다. 테이블에서 레코드를 삭제하도록 선택하면 다음을 사용합니다.alertView에 NSIndexPath 전달 clickedButtonAtIndex
[self.managedObjectContext deleteObject:[self.recordList objectAtIndex:indexPath.row]];
[self.managedObjectContext save:nil];
[self.tableViewSavedRecords reloadData];
모든 레코드가 삭제되고 테이블이 다시로드됩니다.
그러나 일부 레코드는 암호로 보호하고 이러한 기록이 삭제 선택할 때 경고가 암호를 물어 나타납니다
이NSString *enteredPassword = [[alertView textFieldAtIndex:0] text];
if ([enteredPassword isEqualToString: savedPassword]) {
[self.managedObjectContext deleteObject:[self.recordList objectAtIndex:indexPath.row]];
[self.managedObjectContext save:nil];
[self.tableViewSavedRecords reloadData];
}
문제는
objectAtIndex:indexPath.row
입니다
은 다음과 같습니다 (가) alertView clickedButtonAtIndex
UIAlertView *alert = [[UIAlertView alloc]initWithTitle: @"Warning" message: @"This record has been password protected.\nEnter password." delegate: self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];
alert.alertViewStyle = UIAlertViewStyleSecureTextInput;
[alert show];
분명히 alertView clickedButtonAtIndex
섹션에서 인식되지 않습니다. NSIndexPath
을 alertView clickedButtonAtIndex
에 전달하려면 어떻게해야하나요?
나는 선언 시도 :
NSIndexPath *selectedIndexPath;
그런 경고는 내가 포함 한 트리거되는 경우 : AlertView 클릭 수에 그런
selectedIndexPath = [tableViewPausedObs indexPathForSelectedRow];
을 :
[self.managedObjectContext deleteObject: selectedIndexPath.row];
[self.managedObjectContext save:nil];
을하지만이 삭제 선택한 행이 아닌 테이블의 첫 번째 행
처럼 선택된 행의 NSIndexPath를 얻을 수있는'UIAlertView'은 몇 년 동안 사용되지 않습니다. 'UIAlertController'를 사용하십시오. 이것은 블록 기반이며 인덱스 경로를 캡쳐 할 수 있습니다. – vadian