在同一个viewcontroller中调用storyboard和xib?

时间:2014-10-30 05:49:45

标签: ios iphone storyboard xib

我不知道如何按原样加载我的页面,当我按下后退按钮时。我有两种类型的页面故事板和xib。显示所有信息,当我点击go按钮时,它将转到新页面。所有这些工作都很好,但我的问题是当我按下后退按钮我需要我的故事板和xib文件应该在同一视图中显示。当我运行我的应用程序时,它只显示故事板页面xib没有加载。

感谢您提前了解我的代码:

- (IBAction)back:(id)sender {
    Recharge *view = [self.storyboard instantiateViewControllerWithIdentifier:@"Recharge"];
    [self presentViewController:view animated:YES completion:nil];
    self.recharge = [[mobileViewcontroller alloc]init];
    self.recharge.view.frame = CGRectMake(0,100, 400, 400);
    [self addChildViewController:self.recharge];
    [self.view addSubview:self.recharge.view];
}

3 个答案:

答案 0 :(得分:0)

我假设Recharge是故事板中的视图控制器,而mobileViewController是来自xib的视图控制器。

您正在调用错误的构造函数来加载mobileViewController。您需要使用(instancetype)initWithNibName:(NSString *)nibName bundle:(NSBundle *)nibBundle加载xib文件。见https://developer.apple.com/library/ios/Documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/initWithNibName:bundle

答案 1 :(得分:0)

替换您的代码
- (IBAction)back:(id)sender {
    Recharge *rechargeView = [self.storyboard instantiateViewControllerWithIdentifier:@"Recharge"];
    [self presentViewController:rechargeView animated:YES completion:nil];

    self.recharge = [[mobileViewcontroller alloc]init];
    self.recharge.view.frame = CGRectMake(0,100, 400, 400);
    [rechargeView addChildViewController:self.recharge];
    [rechargeView.view addSubview:self.recharge.view];
}

它会起作用。

当您在mobileViewcontroller上添加用户无法看到的current viewController视图时,您应该将mobileViewcontroller添加到层次结构中的recharge viewController并且对用户可见。

答案 2 :(得分:0)

当你通过传递某个东西调用新的viewcontroller时你已经做了这样的代码[self presentViewController:view animated:YES completion:nil];

试试这个:

  • (IBAction为)背面:(ID)发送方 {

    Recharge * view = [self.storyboard instantiateViewControllerWithIdentifier:@" Recharge"];

    self.recharge = [[mobileViewcontroller alloc] init];

    self.recharge.view.frame = CGRectMake(0,100,400,400);

    [view addChildViewController:self.recharge];

    [查看addSubview:self.recharge.view];

    [self presentViewController:view animated:YES completion:nil];

    }