【问题标题】:call storyboard and xib in same viewcontroller?在同一个视图控制器中调用情节提要和xib?
【发布时间】:2014-12-26 01:52:28
【问题描述】:

当我按下返回按钮时,我不知道如何按原样加载我的页面。我有两种类型的页面故事板和 xib。显示所有信息,当我单击转到按钮时,它将转到新页面。所有这些工作都很好,但我的问题是当我按下后退按钮时,我需要我的故事板和 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];
}

【问题讨论】:

    标签: ios iphone storyboard xib


    【解决方案1】:

    将您的代码替换为

    - (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];
    }
    

    它会起作用的。

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

    【讨论】:

    • 真的超级兄弟,它的工作非常感谢你的帮助......:) :) 以及该页面中的另一个小请求我输入了一些字段,我想在按下时恢复相同的值后退按钮
    • 欢迎您。那么你想在哪个页面恢复值呢?
    • 在 MobileViewController 页面中,即 self.recharge = [[mobileViewcontroller alloc]init];
    • 在 MobileViewController 我有两个名为电话号码和金额的文本字段,这两个字段都包含一些值,当我再次调用同一页面时,我需要恢复相同的值
    • 为此,不是最简单的方法就是不要一次又一次地创建你的 mobileviewcontroller 对象。在返回按钮操作中应用检查 if(!self.recharge){ self.recharge = [[mobileViewcontroller alloc]init];因此,如果已经有一个对象,它将不会创建一个新对象并使用旧对象
    【解决方案2】:

    我假设 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

    【讨论】:

    • 你能写代码来一起加载我的故事板和xib文件吗
    • 呃,我什至给了你调用的init方法。这很简单。将self.recharge = [[mobileViewcontroller alloc]init]; 替换为self.recharge = [[mobileViewcontroller alloc]initWithNibName:@"yournibname.xib" bundle:nil];
    • 我有主情节提要,它在同一个视图控制器中包含 tableview 我添加 xib 文件的子视图以显示为同一个视图控制器,在这些步骤之前它工作得很好但是当我点击返回按钮时需要显示视图是
    • 我试过充值 *view = [self.storyboard instantiateViewControllerWithIdentifier:@"Recharge"]; [self presentViewController:view Animation:YES completion:nil]; self.mobileView = [[mobileViewcontroller alloc]initWithNibName:@"mobileViewcontroller.xib" bundle:nil]; self.mobileView.view.frame = CGRectMake(0,100, 400, 400); [自我 addChildViewController:self.mobileView]; [self.view addSubview:self.mobileView.view];
    【解决方案3】:

    当你调用新的 viewcontroller 并传递一些东西时,你会做这样的代码,把所有代码放在 [self presentViewController:view animated:YES completion:nil];

    试试这个:

    • (IBAction)返回:(id)发件人 {

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

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

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

      [查看addChildViewController:self.recharge];

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

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

      }

    【讨论】:

    • 你所做的与我所做的相同,但无论如何它都没有用,谢谢你抽出时间回复我从 Ihulk 得到输出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    • 2013-11-05
    • 2012-06-25
    • 2017-07-08
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    相关资源
    最近更新 更多