如何在不使用标签栏控制器的情况下在情节提要之间切换

AJ152

我有3个Storyboard(主要,第一和第二个),Storyboard Main的左上角的视图内包含两个按钮(按钮:第一和第二:按钮),而没有使用Tab Bar控制器如何在第一和第二之间切换从主情节提要板同时保持两个按钮始终可见?我用故事板参考尝试,但选择其中一个按钮时,它只是继续入所选择的故事板和按钮,因为需要在从主要故事板视图容器中可见不起作用,容器视图似乎是一个选项,但不知道如何在保持视图可见的同时在该视图容器中的情节提要之间切换。

请帮忙。谢谢在此处输入图片说明

代码不同

您不必在Interface Builder中使用Storyboard Reference。您可以通过编程方式创建引用,但无论如何,我发现这些引用都更容易理解。

界面生成器

请确保您设置FirstViewControllerSecondViewController通过检查各自的故事板的初始控制器“是初始视图控制器”。

界面生成器设置

class MainViewController: UIViewController {
    @IBOutlet weak var contentView: UIView!

    // Initialize the first view controller of storyboard
    let firstViewController: FirstViewController = {
        let storyboard = UIStoryboard(name: "First", bundle: nil)
        return storyboard.instantiateInitialViewController() as! FirstViewController
    }()

    // Initialize the second view controller of storyboard
    let secondViewController: SecondViewController = {
        let storyboard = UIStoryboard(name: "Second", bundle: nil)
        return storyboard.instantiateInitialViewController() as! SecondViewController
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        show(childViewController: firstViewController)
    }

    @IBAction func showFirstVC(_ sender: Any) {
        // Don't show the first view controller again if it's already visible
        guard firstViewController.parent != self else { return }
        removeAllChildViewControllers()
        show(childViewController: firstViewController)
    }

    @IBAction func showSecondVC(_ sender: Any) {
        // Don't show the second view controller again if it's already visible
        guard secondViewController.parent != self else { return }
        removeAllChildViewControllers()
        show(childViewController: secondViewController)
    }

    // MARK: - Helper methods
    // Show a view controller in the `contentView`
    func show(childViewController vc: UIViewController) {
        self.addChildViewController(vc)
        self.contentView.addSubview(vc.view)
        vc.didMove(toParentViewController: self)
    }

    // Remove a view controller from the `contentView`
    func remove(childViewController vc: UIViewController) {
        vc.willMove(toParentViewController: nil)
        vc.removeFromParentViewController()
        vc.view.removeFromSuperview()
    }

    // Remove all child view controllers
    func removeAllChildViewControllers() {
        for childVC in self.childViewControllers {
            remove(childViewController: childVC)
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不使用屏幕的情况下在tty之间切换?

如何在不使用segue的情况下在视图控制器之间传递图像

如何在不使用服务和 rootscope 的情况下在两个控制器之间共享数据?

在不使用.activate的情况下在不同的工作簿之间切换

如何在不使用Break键的情况下在远程桌面中切换全屏模式?

如何在不断开连接的情况下在耳机和扬声器之间切换

在不使用导航控制器的情况下在导航栏中创建信息按钮

在不使用情节提要的情况下使用Swift通过View控制器传递数据

如何在不使用情节提要的情况下在UITableView中使用静态单元格?

如何在不注销的情况下在gnome-shell和unity之间切换?

如何在不重新加载整个网页的情况下在角度组件之间切换?

SwiftUI如何在不切换标签栏的情况下刷新单个标签视图

如何在不使用模型的情况下在视图中提交给控制器后检索表单值?

使用Swift在情节提要之间切换

如何在没有情节提要的情况下以编程方式实例化视图控制器

我想在不使用标签栏控制器的情况下制作自定义标签栏

如何在不使用边距的情况下在 li 标签之间留出空间?

如何在情节提要中的UIViewController之间手动切换?

您可以在不使用情节提要的情况下在AutoLayout控制台输出中标记视图吗?

如何在不使用C / C ++循环的情况下切换n次?

如何在不使用transform:scale的情况下更改CSS切换开关的大小?

如何在不注销的情况下在Unity和Unity 2D之间切换?

如何在不同选项卡下的导航控制器之间切换?

如何在不使用导航控制器或导航栏的情况下从Xib返回main.storyboard中的视图控制器?

如何在用户仍然使用 SFML 持有键的情况下在精灵表的两个不同部分之间来回切换

如何在不使用情节提要的情况下创建新的Swift项目?

如何在不同情节提要板上的视图控制器之间传递数据?

在标签栏控制器中来回切换后,iOS UI元素被拉伸

如何在控制器切换案例功能中使用提交值?