у меня есть один tableviewController с пользовательскими ячейками, который содержит метку и переключатель.
я сохраняю состояние коммутатора в CoreData
- (IBAction)roomSwitch:(id)sender {
NSLog(@"Switch wurde betätigt");
NSManagedObjectContext *context = [app managedObjectContext];
UISwitch *switcher = sender;
NSInteger rowInIndexPath = switcher.tag;
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:rowInIndexPath inSection:0];
Raumattribute *att=[self.fetchedResultsController objectAtIndexPath:indexPath];
att.switch = [NSNumber numberWithBool:switcher.on];
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
NSLog(@"Schalter: %@", att.switch);
}
Это работает ->
2012-03-28 16:43:34.657 Book-App[40011:11903] Switch: 1
2012-03-28 16:43:37.373 Book-App[40011:11903] Switch wurde betätigt
2012-03-28 16:43:37.377 Book-App[40011:11903] Switch: 0
В моем cellForRowAtIndexPath у меня есть
[cell.raumSwitch addTarget:self action:@selector(roomSwitch:) forControlEvents:UIControlEventValueChanged];
который вызывает номер переключателя:
Теперь моя проблема в том, что если я поменяю переключатель, другой переключатель также изменит его состояние. Как я могу сказать переключателю, к какой строке он принадлежит.
Моя вторая проблема: если я меняю вид, все переключатели выключаются. Как я могу показать фактическое состояние, которое сохраняется в CoreData?
Я пытался
cell.roomSwitch = [managedObject valueForKey:@"switch"];
но он вылетает.
Надеюсь, кто-то понимает мои проблемы.