我正在尝试遵循TableView编程指南,我正在直接从指南中复制代码,但是当我尝试编译时,我得到“SimpleEditableListAppDelegate undeclared”。谷歌只返回节目指南。什么是SimpleEditableListAppDelegate,我该如何使用它?
答案 0 :(得分:4)
SimpleEditableListAppDelegate
是应用程序的委托。这是一个在创建新的Xcode项目时自动创建的类。您的代码未编译的原因是您的项目中不存在SimpleEditableListAppDelegate
类,因为您的项目的名称与表视图编程指南中的项目不同。出现“SimpleEditableListAppDelegate undeclared”错误,因为代码中的某处存在对该类不存在的引用。
您应该能够在Xcode的文件侧栏中看到您的应用委托类的名称,因此只要您看到SimpleEditableListAppDelegate
,请将其替换为您的实际委托类名称。或者用SimpleEditableListAppDelegate
替换[[UIApplication sharedApplication] delegate]
的所有实例。
听起来您需要先了解iPhone编程的基础知识,所以您可能需要查看this。
答案 1 :(得分:3)
我认为可以肯定地说我们都在关注Apple的这个来源......
- (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
// If row is deleted, remove it from the list.
if (editingStyle == UITableViewCellEditingStyleDelete) {
SimpleEditableListAppDelegate *controller = (SimpleEditableListAppDelegate *)[[UIApplication sharedApplication] delegate];
[controller removeObjectFromListAtIndex:indexPath.row];
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
SimpleEditableListAppDelegate只是其示例类的名称。在您的代码中,您只想使用表视图的委托名称(即MyAppDelegate)或仅使用“[self removeObjectFromListAtIndex];”而不是创建控制器对我来说工作得很好。
removeObjectFromListAtIndex再次只是您要创建的函数的任意名称,用于删除支持表视图数据的数组的内容。我没有使用函数,而是使用了几行代码。
以下是它对我有用的方法......
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Update Model
NSMutableArray *work_array = [NSMutableArray arrayWithArray:self.city_table];
[work_array removeObjectAtIndex:indexPath.row];
self.city_table = [NSArray arrayWithArray:work_array];
[[NSUserDefaults standardUserDefaults] setObject:self.city_table forKey:KEY_CITY_TABLE];
// Update View
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
我希望这会有所帮助...... ž@ķ!