如何推送查看控制器表单呈现的 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的主要内容,如果未能解决你的问题,请参考以下文章
swift3:如何将 xib 呈现给 viewcontroller