我仍然是iOS开发的新手,所以请耐心等待。
我有一个使用静态单元格的TableView来包含选项(点击查看),我可以选择细胞。我想为每个单元格分配一个值(标识符),这样当选择或取消选择单元格时,我可以在数组中添加/删除它。然后,编辑完成后,使用存储在数组中的引用来更新相应的CoreData属性。
我的谷歌技能今天让我失望了,所以非常感谢正确的方向推进。
感谢。
答案 0 :(得分:4)
NSIndexPath是最好的工具!它对于选定的单元格是唯一的。
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"%i", indexPath.row);
NSLog(@"%i", indexPath.section);
}
我认为你需要这个:
[yourArray objectAtIndex:indexPath.row];
获得参考。
答案 1 :(得分:0)
您可以在方法
中选择单元格时添加有关单元格的详细信息- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
用于在委托方法
中取消选择单元格时删除详细信息- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
答案 2 :(得分:0)
您无需保留对每个单元格的引用。数据源应该是屏幕上显示内容的镜像。您可以使用以下命令知道应删除的内容:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
或取消选择时:
- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
使用NSIndexPath
,您可以知道已选择/取消选择的内容:
答案 3 :(得分:0)
根据我的理解,您希望选择/取消选择UITableView
行,并在删除表格中的任何行后,您希望它也应从DB中删除。
你可以使用方法 -
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
if(editingStyle==UITableViewCellEditingStyleDelete)
{
[code to remove object from db on particular property];
}
}
现在,从DB中删除特定记录/行的代码是 -
-(void)deleteUserForId:(NSString *)user_id
{
NSManagedObject *statusTag=[self getUserForUserid:user_id];
NSError *error;
[managedObjectContext deleteObject:statusTag];
if (![managedObjectContext save:&error])
{
}
}
-(UserData*)getUserForUserid:(NSString *)user_id
{
NSFetchRequest *request = [self getBasicRequestForEntityName:@"UserData"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"user_id== %@",user_id];
[request setPredicate:predicate];
[request setReturnsObjectsAsFaults:NO];
NSError *error = nil;
NSArray *results = [managedObjectContext executeFetchRequest:request error:&error];
UserData *userInfoObj = nil;
if (!error && [results count] > 0)
{
userInfoObj = [results objectAtIndex:0];
}
return userInfoObj;
}