首页 文章

移动回另一个视图时,标签栏控制器消失

提问于
浏览
0

我想创建一个应用程序,让用户单击导航栏上V1上的按钮 . 这将转到V2,在那里他们可以按下V2上导航栏上的另一个按钮,它将把它们带回到V1,底部有标签栏控制器 . 我不希望V2上的标签栏,我不希望V2作为标签栏项目 . 当我尝试这个时,当我从V2中回到V1时,标签栏在V1上消失 .

TAB BAR CONTROLLER - > TAB BAR ITEM(V1) - > V2(通过V1上的导航栏按钮项) - >返回V1(通过V2上的导航栏按钮项)

我已将 [self.navigationController, popViewControllerAnimated:YES]; 添加到我的按钮功能,但它出现了错误 - 容器文字中的预期表达式 .

除了这段代码,我还没有在我的应用程序中有任何其他代码 .

我正在使用Xcode 8.0和Swift 3.0

3 回答

  • 0

    经过几天试图找出答案后,我已经解决了我的问题 . 您需要将其添加到任何视图控制器 .

    @IBAction func unwindToViewController (sender: UIStoryboardSegue){
    
        }
    

    然后,您可以将条形按钮项目中的segue添加到视图控制器上的退出图标 .

    You can view an image of the VC scene here.

  • 0

    首先创建 UITabBarController 的子类,然后将属性添加到 AppDelegate

    var navController: UINavigationController?
    var tabController: MyTabController?
    

    如果您想在应用启动时显示标签栏控制器,请将这些代码放在 AppDelegatedidFinishLaunchingWithOptions

    self.window = UIWindow(frame: UIScreen.main.bounds)
     let myStoryboard = UIStoryboard(name: "Main", bundle: nil) as UIStoryboard
     self.tabController = myStoryboard.instantiateViewController(withIdentifier: "MyTabController") as? MyTabController
    //self.navController = UINavigationController(rootViewController: self.tabController!)
    //self.window?.rootViewController = self.navController
     self.window?.rootViewController = self.tabController
     self.window?.makeKeyAndVisible()
     return true
    

    如果要在登录后跳转标签栏或其他内容,请将属性添加到该控制器

    var appDelegate: AppDelegate!
    

    viewDidLoad

    appDelegate = UIApplication.shared.delegate as? AppDelegate
    

    方法应该如此

    func logIntoApp() {
    
        appDelegate.tabController = self.storyboard?.instantiateViewController(withIdentifier: "MyTabController") as? MyTabController
        appDelegate.window?.rootViewController = appDelegate.tabController
     }
    

    然后在选项卡视图控制器中,创建 AppDelegate 的属性并按上述方式分配委托 .

    方法应该是这样的:

    @IBAction func showWithTab(_sender: AnyObject) {
    
          let DefaultVC = self.storyboard?.instantiateViewController(withIdentifier: "DefaultViewController") as! DefaultViewController
          self.navigationController?.pushViewController(DefaultVC, animated: true)
    }
    
    @IBAction func showWithoutTab(_sender: AnyObject) {
    
          let DefaultVC = self.storyboard?.instantiateViewController(withIdentifier: "DefaultViewController") as! DefaultViewController
    
        // You can create your own animation
          UIView.transition(from: (appDelegate.tabController?.view)!, to: (appDelegate.navController?.view)!, duration: 0.3, options: UIViewAnimationOptions.curveEaseIn) { (finished) in
    
          self.appDelegate.window?.rootViewController = self.appDelegate.navController
        }
    
        // OR you can use like this way
          UIView.transition(from: self.view, to: DefaultVC.view, duration: 0.3, options: UIViewAnimationOptions.curveEaseIn) { (finished) in
    
          self.appDelegate.window?.rootViewController = self.appDelegate.navController
        }
    }
    
  • 0

    为什么不使用简单的Tab Bar?像这样的东西:

    enter image description here

    在VC1中:

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
    
        myTab.removeFromSuperview()
    }
    

相关问题