我在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