Master-Detail Application에서 스토리보드를 사용하여 시작 후 화면을 자체 보기로 변경

여러 번 했는데 매번 완전히 잊어 버렸기 때문에 메모로 남겨 둘 필요를 느꼈다.

GUI에서 작업



  • 뷰 추가
  • 파일 트리를 마우스 오른쪽 버튼으로 클릭하고 NewFile, CocoaTouch에서 UIViewController subclass를 추가하고 적절한 이름을 지정합니다
  • 스토리 보드 파일을 열고 오브젝트 목록에서 오렌지 구의 ViewController를 D & D로 추가
  • ViewController를 선택하고 Identity Inspector에서 만든 ViewController의 이름을 지정합니다


  • 세구에 변경
  • NavigationController에서 MasterViewController로 확장되는 Relationship segue 지우기
  • NavigationController에서 만든 ViewController에 Relationship segue 연결
  • 자신이 만든 ViewController에 버튼 등을 추가하고 MasterViewController에 연결

  • 세구에 연결은 두 손가락 드래그 또는 ctrl + 드래그하여 대상에서 드롭하여 연결할 수 있습니다


  • 코드 변경


  • managedObjectContext의 취득 방법을 변경
  • AppDelegate.m에서 초기화 할 때 managedObjectContext를 MasterViewController에 전달하는 코드를 작성하는 것을 지우십시오
  • MasterViewController의 managedObjectContext 속성을 @dynamic로 변경하고 AppDelegate 인스턴스의 managedObjectContext를 검색하는 코드로 변경


  • AppDelegate.m
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
        // Override point for customization after application launch.
        //UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
        //MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
        //controller.managedObjectContext = self.managedObjectContext;
        //MasterViewController *controller = (MasterViewController *)navigationController.topViewController;
        return YES;
    }
    

    MasterViewController.h
    @property (nonatomic, readonly) NSManagedObjectContext * managedObjectContext;
    @property (strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
    

    MasterViewController.m
    #import "AppDelegate.h"
    @implementation MasterViewController
    
    @dynamic managedObjectContext;
    @synthesize fetchedResultsController=__fetchedResultsController;
    - (NSManagedObjectContext *)managedObjectContext {
        AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
        return appDelegate.managedObjectContext;
    }
    
  • 편집 버튼 제거
  • MasterViewController 초기화시 왼쪽 버튼을 되돌리기 버튼에서 Edit 버튼으로 변경하는 코드가 쓰여지는 것을 지우기


  • MasterViewController.m
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        // Set up the edit and add buttons.
        // self.navigationItem.leftBarButtonItem = self.editButtonItem;
    
        UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(insertNewObject)];
        self.navigationItem.rightBarButtonItem = addButton;
    }
    

    before
    before

    after
    after

    좋은 웹페이지 즐겨찾기