如何推送查看控制器表单呈现的 xib

Posted

技术标签:

【中文标题】如何推送查看控制器表单呈现的 xib【英文标题】:How to push to view controller form presented xib 【发布时间】:2017-05-26 06:52:57 【问题描述】:

我有密码的xib,在我点击登录按钮后,将会调用Web服务,成功响应后,我必须提供密码的xib。 当我完成那部分时,我必须从提供的 xib 推送到另一个视图控制器。

这是我的代码:

[self dismissViewControllerAnimated:NO completion:^
    if ([_delegate respondsToSelector:@selector(unlockWasSuccessfulLockScreenViewController:pincode:)]) 
        [_delegate unlockWasSuccessfulLockScreenViewController:self pincode:pincode];

        PassCodeVC *sgn = [self.storyboard instantiateViewControllerWithIdentifier:@"PassCodeVC"];
        UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:sgn];

        [nav pushViewController:sgn animated:YES];

    
    ];

我已经这样介绍了xib:

 JKLLockScreenViewController * viewController = [[JKLLockScreenViewController alloc] initWithNibName:NSStringFromClass([JKLLockScreenViewController class]) bundle:nil];
UINavigationController *nav = [[UINavigationController alloc]initWithRootViewController:viewController];

[viewController setLockScreenMode:LockScreenModeNew];    // enum  LockScreenModeNormal, LockScreenModeNew, LockScreenModeChange 
[viewController setDelegate:self];
[viewController setDataSource:self];
[viewController setTintColor:[UIColor colorWithRed:53.0 / 255.0 green:115.0 / 255.0  blue:157.0 /255.0  alpha:1]];

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

【问题讨论】:

【参考方案1】:

如果您希望使用当前导航,那么只需使用当前导航控制器简单地传递新控制器。

PassCodeVC *sgn = [self.storyboard instantiateViewControllerWithIdentifier:@"PassCodeVC"];
[self.navigationController pushViewController:childViewController animated:YES];

【讨论】:

我已经完成了,但它说你在导航控制器中传递了 nil 值 获取 StoryBoard 像这样: UIStoryboard *storyboard = [UIStoryboard storyboardWithName: @"MainStoryboard" bundle:[NSBundle mainBundle]]; PassCodeVC * sgn = [storyboard instantiateViewControllerWithIdentifier:@"PassCodeVC"];还要检查 StoryBoard ID 是否设置?【参考方案2】:

您可能需要设置您尝试加载的 View Controller 的 Storyboard ID。它位于检查器中,就在您为视图控制器分配自定义类的下方。see this image

【讨论】:

以上是关于如何推送查看控制器表单呈现的 xib的主要内容,如果未能解决你的问题,请参考以下文章

如何从视图控制器推送 xib

swift3:如何将 xib 呈现给 viewcontroller

如何以编程方式从 iOS Swift 3 中的 XIB 推送和呈现给 UIViewController

从 Xib 呈现模态视图控制器

推送视图控制器后出现意外延迟

如何在快速关闭呈现的控制器后推送控制器?