Добрый день. Я сейчас работаю над приложением, в котором есть несколько экранов. Итак, по порядку:
1. На первом экране есть несколько кнопок (English, Spanish, Chinese), при нажатии на которые переходит на второй экран. Предположим, нажали на English.
2. На втором экране обычный table view со списком уроков, которые пользователь создал. Также в nav bar-е кнопка "Добавить" для добавления нового урока.
3. При нажатии на ячейку в таблице переходит на следующий экран, где есть коллекция карточек, реализованных с помощью UIScrollView (в процессе реализации). Сверху в nav bar-е также есть кнопка добавить для добавления новой карточки.
Внимание вопрос: как сделать так, чтобы карточка добавилась именно для этого урока? На данный момент у меня получается так, что при добавлении, она добавляется во все уроки, а мне нужно конкретно в этот.
Код table view для отображения списка уроков (EnglishTablewViewController.m)
@implementation EnglishTableViewController
-(NSManagedObjectContext *)managedObjectContext{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]){
context = [delegate managedObjectContext];
}
return context;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSManagedObjectContext *managedObjectContext = [self managedObjectContext];
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] initWithEntityName:@"EnglishCourse"];
self.cources = [[managedObjectContext executeFetchRequest:fetchRequest error:nil] mutableCopy];
[self.tableView reloadData];
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return [self.cources count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"EnglishCell" forIndexPath:indexPath];
NSManagedObject *course = [self.cources objectAtIndex:indexPath.row];
[cell.textLabel setText:[NSString stringWithFormat:@"%@", [course valueForKey:@"name"]]];
return cell;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return YES;
}
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
NSManagedObjectContext *context = [self managedObjectContext];
if (editingStyle == UITableViewCellEditingStyleDelete){
[context deleteObject:[self.cources objectAtIndex:indexPath.row]];
NSError *error = nil;
if(![context save:&error]){
NSLog(@"Не удалилось! %@ %@", error, [error localizedDescription]);
return;
}
[self.cources removeObjectAtIndex:indexPath.row];
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
Код для добавления нового урока в таблицу (AddEnglishCourseViewController.m):
@implementation AddEnglishCourseViewController
-(NSManagedObjectContext *)managedObjectContext{
NSManagedObjectContext *context = nil;
id delegate = [[UIApplication sharedApplication] delegate];
if ([delegate performSelector:@selector(managedObjectContext)]){
context = [delegate managedObjectContext];
}
return context;
}
- (void)viewDidLoad {
[super viewDidLoad];
}
- (IBAction)save:(id)sender {
NSManagedObjectContext *context = [self managedObjectContext];
NSManagedObject *newDevice = [NSEntityDescription insertNewObjectForEntityForName:@"EnglishCourse" inManagedObjectContext:context];
[newDevice setValue:self.nameTextField.text forKey:@"name"];
NSError *error = nil;
if(![context save:&error]){
NSLog(@"Can't save! %@ %@", error, [error localizedDescription]);
}
[self dismissViewControllerAnimated:YES completion:nil];
}
- (IBAction)cancel:(id)sender {
[self dismissViewControllerAnimated:NO completion:nil];
}
@end
Storyboard
По аналогии хочу сделать и с добавлением карточки в урок, но написав такой же код, карточка добавится во все уроки в таблице.