我在tableView的单元格内有M13Checkbox。当用户检测开关此复选框我想保存在核心数据中的某些数据获取tableview行的indexpath
- (IBAction)completed:(M13Checkbox *)sender {
NSDate *now = [NSDate date];
NSNumber *yes = [NSNumber numberWithBool:YES];
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *selectedHabit = [self.habits objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
self.habit = selectedHabit;
NSNumber *habitID = [self.habit valueForKey:@"habitID"];
NSNumber *habitRepeats = [self.habit valueForKey:@"habitRepeats"];
//getting number of habit reoeats for Smart habits function
int i = [habitRepeats intValue] + 1;
NSNumber *repeats = [NSNumber numberWithInt:i];
[self.habit setValue:repeats forKey:@"habitRepeats"];
//saving completion to core data
NSManagedObject *habitForDate = [NSEntityDescription insertNewObjectForEntityForName:@"HabitForDate" inManagedObjectContext:context];
[habitForDate setValue:now forKey:@"date"];
[habitForDate setValue:habitID forKey:@"habitID"];
[habitForDate setValue:yes forKey:@"completed"];
[context deleteObject:habitForDate];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Can't Save! %@ %@", error, [error localizedDescription]);
}
Althoug在tableview中的习惯已经为关键“habitID”不同的值,habitForDate总是收到
“1”作为“habitID”价值我认为这个问题在代码的下面部分,我得到错误的索引
NSManagedObject *selectedHabit = [self.habits objectAtIndex:[[self.tableView indexPathForSelectedRow] row]];
self.habit = selectedHabit;
我的问题是,如何让这些复选框cliked
有人倒我的投票以下完全没有答案,但一到做一套最简单的方法就是使用标签。 checkbox.tag = indexPath.row,稍后在您的处理程序代码中,您可以根据您的复选框标记构建indexPath。 – Puran 2014-12-01 19:49:59
我认为你可以在cellForRowAtIndexPath委托中的M13Checkbox中设置属性,例如'yourcheckbox.tag = indexPath.row',当你调用函数 - 获取正确的编号。 – 2014-12-02 00:19:34
该方法的工作,谢谢:) – Czarek 2014-12-02 16:22:11