代码之家  ›  专栏  ›  技术社区  ›  MyCSharpCorner

在主uiviewcontroller的子视图中可以有两个导航控制器吗?

  •  1
  • MyCSharpCorner  · 技术社区  · 14 年前

    下图说明了我正在尝试执行的操作:

    http://img337.imageshack.us/img337/1475/multinav.png

    这是一款iPad应用程序。有可能吗?如果是这样的话,有人能发布框架代码吗?

    提前谢谢

    1 回复  |  直到 11 年前
        1
  •  1
  •   Simon    11 年前

    是的,这是可能的。骨架代码:

    头文件:

    @interface SGBSplitViewController : UIViewController
    
    @property (nonatomic, strong, readonly) UIViewController *leftViewController;
    @property (nonatomic, strong, readonly) UIViewController *rightViewController;
    
    - (id)initWithLeftViewController:(UIViewController *)leftViewController
                 rightViewController:(UIViewController *)rightViewController;
    
    @end
    

    实施文件:

    @implementation SGBSplitViewController
    
    - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
    {
        return nil;
    }
    
    - (id)initWithLeftViewController:(UIViewController *)leftViewController
                 rightViewController:(UIViewController *)rightViewController
    {
        self = [super initWithNibName:nil bundle:nil];
        if (self)
        {
            _leftViewController = leftViewController;
            _rightViewController = rightViewController;
        }
        return self;
    }
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
        [self addChildViewController:self.leftViewController];
        [self.view addSubview:self.leftViewController.view];
        [self.leftViewController didMoveToParentViewController:self];
    
        [self addChildViewController:self.rightViewController];
        [self.view addSubview:self.rightViewController.view];
        [self.rightViewController didMoveToParentViewController:self];
    }
    
    - (void)viewDidLayoutSubviews
    {
        [super viewDidLayoutSubviews];
    
        self.leftViewController.view.frame = <frame>;
        self.rightViewController.view.frame = <frame>;
    }