1

IDを作成し、テキストフィールドを介して名前を追加し、ビューコントローラーへのプッシュセグエを介して複数のユーザーが選択したプロパティを追加するという主な概念を持つタブバーコントローラーインターフェイスを持っています。

メインの ID ビュー コントローラーの追加とプッシュ セグエを解決して、詳細ビュー コントローラーから単一のプロパティを追加しましたが、シナリオを変更したいと思います...

  1. 詳細View Controllerにはプロシージャのリストがあり、ユーザーはメインビューに戻されるものを選択できます...「チェックボックス」または複数選択方法として設定し、すべてのプロシージャを選択するにはどうすればよいですか1 つだけではなく、メイン ビューに戻されましたか?

  2. ストレージ モデルとしてコア データを使用し、メイン エンティティ「MedRec」と、MedRec のデータを構成する他のエンティティ (「プロシージャ」、「レベル」、「日付」など) との関係を使用しています。

    #import "MedRecTVC.h"
    
    #import "MedRec.h"
    
    @implementation MedRecTVC
    
    @synthesize fetchedResultsController = _fetchedResultsController;
    @synthesize managedObjectContext = _managedObjectContext;
    @synthesize selectedMedRec;
    
    -(void)setupFetchedResultsController
    
    {
    // 1 - Decide what Entity you want
    
    NSString *entityName = @"MedRec"; //Put your entity name here
    NSLog(@"Setting up a Fetched Results Controller for the Entity named %@", entityName);
    
    // 2 - Request the Entity
    
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:entityName];
    
    // 3 - Filter it if you want
    
    //request.predicate = [NSPredicate predicateWithFormat:@"Level.name = Blah"];
    
    // 4 - Sort it if you want
    
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor            sortDescriptorWithKey:@"number" ascending:YES selector:@selector(localizedCaseInsensitiveCompare:)]];
    
    // 5 - Fetch it
    
    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:self.managedObjectContext sectionNameKeyPath:nil cacheName:nil];
    
    [self performFetch];
    
    }
    
    - (void)viewWillAppear:(BOOL)animated
    {
    [super viewWillAppear:animated];
    [self setupFetchedResultsController];
    }
    
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
    static NSString *CellIdentifier = @"MedRec Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    
    if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }
    
    //configure the cell
    
    //decide the order of table cell text and detail text
    
    MedRec *medrec = [self.fetchedResultsController objectAtIndexPath:indexPath];
    NSString *number = [NSString stringWithFormat:@"%@", medrec.number];
    cell.textLabel.text = number;
    cell.detailTextLabel.text = medrec.inLevel.level1;
    
    return cell;
    }
    
    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    
    if (editingStyle == UITableViewCellEditingStyleDelete) {
    
    [self.tableView beginUpdates]; // Avoid  NSInternalInconsistencyException
    
    // Delete the role object that was swiped
    MedRec *medrecToDelete = [self.fetchedResultsController objectAtIndexPath:indexPath];
    NSLog(@"Deleting (%@)", medrecToDelete.number);
    [self.managedObjectContext deleteObject:medrecToDelete];
    [self.managedObjectContext save:nil];
    
    // Delete the (now empty) row on the table
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
    [self performFetch];
    
    [self.tableView endUpdates];
    }
    }
    
    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
    {
    if ([segue.identifier isEqualToString:@"Add MedRec Segue"])
    {
    NSLog(@"Setting MedRecTVC as a delegate of AddMedRecTVC");
    
    AddMedRecTVC *addMedRecTVC = segue.destinationViewController;
    addMedRecTVC.delegate = self;
    addMedRecTVC.managedObjectContext = self.managedObjectContext;
    }
    
    else if ([segue.identifier isEqualToString:@"MedRec Detail Segue"])
    {
    NSLog(@"Setting MEdRecTVC as a delegate of MedRecDetailTVC");
    MedRecDetailTVC *medrecDetailTVC = segue.destinationViewController;
    medrecDetailTVC.delegate = self;
    medrecDetailTVC.managedObjectContext = self.managedObjectContext;
    
    NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
    self.selectedMedRec = [self.fetchedResultsController objectAtIndexPath:indexPath];
    
    NSLog(@"Passing selected medrec (%@) to MedRecDetailTVC", self.selectedMedRec.number);
    medrecDetailTVC.medrec = self.selectedMedRec;
    }
    
    else {
    NSLog(@"Unidentified Segue Attempted!");
    }
    
    }
    
    
    - (void)theSaveButtonOnTheAddMedRecTVCWasTapped:(MedRecDetailTVC *)controller
    {
    //refresh the table
    //close delegated view
    [controller.navigationController popViewControllerAnimated:YES];
    
    }
    
    - (void)theSaveButtonOnTheMedRecDetailTVCWasTapped:(MedRecDetailTVC *)controller
    {
    [controller.navigationController popViewControllerAnimated:YES];
    }
    
    
    
    @end
    
4

0 に答える 0