스토리 보드의 "ContainerView"를 사용해보십시오.

5544 단어 XcodeiOSStoryboard
최근 Storyboard에서 여러 가지를 시도하고 있습니다.

ContainerView를 사용해보기



일부 Objects에는 "ContainerView"라는 것이 있습니다. 이것을 사용하면 ViewController에 ViewController를 포함시킬 수 있습니다.


4로 분할하여 다양한 ViewController를 끼웁니다.


실행하면 이런 느낌의 혼돈이됩니다.


각 컨트롤러는 제대로 독립적으로 움직입니다. 분할된 가운데 Tab의 전환이나 NavigationBar의 push가 동작하고 있습니다.

ContainerView는 무엇입니까?



Storyboard에 붙여넣을 수 있는 Object는, 통상 어떠한 클래스가 대응하고 있습니다만, ContainerView는 다른 것 같습니다.
실태로서는 UIView입니다만, Storyboard상에서 특별한 동작을 하고 있는 것 같습니다.
  • ContainerView로서 붙은 View로부터 Ctrl+드래그로 선을 연장해 ViewController에 연결하면, "embed"라고 하는 접속이 생긴다.
  • embed로 연결된 ViewController는 스토리 보드의 크기가 원래 View의 크기로 정렬됩니다.
  • embed로 연결된 ViewController는 부모 ViewController의 "childViewControllers"에 추가됩니다
  • embed로 연결된 ViewController의 View는 부모 ViewController의 View에 addSubview됩니다
  • -(void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];
        for (id c in self.childViewControllers) {
            NSLog( @"c=%@",c);
        }
        for( UIView *v in self.view.subviews){
            NSLog(@"v=%@",v);
            for( UIView *v2 in v.subviews){
                NSLog(@"v2=%@",v2);
            }
        }
    }
    

    이렇게 쓰면 ↓와 같은 결과가 되었습니다.
    2013-08-05 23:14:06.073 20130805_2[11443:c07] c=<UINavigationController: 0x75e00e0>
    2013-08-05 23:14:06.075 20130805_2[11443:c07] c=<UITabBarController: 0x75e45f0>
    2013-08-05 23:14:06.077 20130805_2[11443:c07] c=<UITableViewController: 0x75e9fe0>
    2013-08-05 23:14:06.078 20130805_2[11443:c07] c=<UICollectionViewController: 0x75ef510>
    2013-08-05 23:14:06.081 20130805_2[11443:c07] v=<UIView: 0x75df4a0; frame = (0 0; 160 230); autoresize = W+H+BM; layer = <CALayer: 0x75de650>>
    2013-08-05 23:14:06.081 20130805_2[11443:c07] v2=<UILayoutContainerView: 0x75e2b10; frame = (0 0; 160 230); autoresize = W+H; layer = <CALayer: 0x75e2bb0>>
    2013-08-05 23:14:06.082 20130805_2[11443:c07] v=<UIView: 0x75df6d0; frame = (160 0; 177 230); autoresize = W+H+BM; layer = <CALayer: 0x75df730>>
    2013-08-05 23:14:06.083 20130805_2[11443:c07] v2=<UILayoutContainerView: 0x75e4580; frame = (0 0; 177 230); autoresize = W+H; layer = <CALayer: 0x75e64e0>>
    2013-08-05 23:14:06.084 20130805_2[11443:c07] v=<UIView: 0x75df760; frame = (0 230; 160 230); autoresize = W+TM+H; layer = <CALayer: 0x75df900>>
    2013-08-05 23:14:06.084 20130805_2[11443:c07] v2=<UITableView: 0x834d600; frame = (0 0; 160 230); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x75edd60>; layer = <CALayer: 0x75ed820>; contentOffset: {0, 0}>
    2013-08-05 23:14:06.085 20130805_2[11443:c07] v=<UIView: 0x75df950; frame = (160 230; 160 230); autoresize = W+TM+H; layer = <CALayer: 0x75df9b0>>
    2013-08-05 23:14:06.086 20130805_2[11443:c07] v2=<UIView: 0x75eeaa0; frame = (0 0; 160 230); autoresize = W+H; layer = <CALayer: 0x75ed570>>
    

    ContainerView는 몇시에 사용하면 좋습니까?



    Storyboard를 사용하여 ViewController 안에 ViewController를 끼우고 싶을 때 등에 어떨까요? UIPageViewController를 사용해 「화면의 일부만」페이지 넘기는 경우등에, 이것을 사용하면 좋은 느낌으로 할 수 있는 것이 아닐까 생각합니다.

    좋은 웹페이지 즐겨찾기