![](/img/trans.png)
[英]Instantiating a View Controller programmatically with Storyboard from AppDelegate
[英]Open a view programmatically with tab controller from storyboard
我有一个故事板,其中包含以下视图(场景):
基于用户通过单击按钮登录(登录),我以编程方式加载带有始终第一个选项卡的选项卡栏控制器,代码如下:
LibraryWebViewContoller *lbc = [self.storyboard instantiateViewControllerWithIdentifier:@"docovaMainTabBarController"];
[self presentViewController:lbc animated:YES completion:nil];
我想要做的是能够使用故事板中的 TabBarController 以编程方式打开不同的选项卡。 到目前为止,我能够使用第一个选项卡打开选项卡栏控制器,但在打开其他选项卡时没有运气,因为它似乎总是在选择第一个选项卡的情况下加载 TabBarController。
我能够通过使用以下代码解决这个问题:
UITabBarController *tbc = [self.storyboard instantiateViewControllerWithIdentifier:@"docovaMainTabBarController"];
tbc.selectedIndex=1;
[self presentViewController:tbc animated:YES completion:nil];
另外,请记住编辑故事板并为 UITabBarController 设置一个故事板 ID 设置为 docovaMainTabBarController 以便它可以在故事板中唯一标识。
let tbc = self.storyboard.instantiateViewController(withIdentifier:"docovaMainTabBarController") as! UITabBarController
tbc.selectedIndex = 1
self.present(tbc, animated: true, completion:nil)
假设您想要选择第二个视图控制器。 在标签栏控制器上设置 activeViewController 属性)
lbc.activeViewController = [lbv.viewControllers objectAtIndex:1];
(不确定 lbc 是标签栏控制器还是标签栏中的第一个视图控制器 - 假设是)
斯威夫特4:
let tbc = storyboard.instantiateViewController(withIdentifier: "docovaMainTabBarController") as? UITabBarController tbc.selectedIndex = 1 present(tbc, animated: true) {() -> Void in }
斯威夫特 5
let storyboard = UIStoryboard(name: "TabBarController", bundle: .main)
let tabbarController = storyboard.instantiateInitialViewController()
tabbarController?.modalPresentationStyle = .fullScreen
self.present(tabbarController!, animated: true, completion: nil)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.