gpt4 book ai didi

ios - 移回另一个 View 时选项卡栏 Controller 消失

转载 作者:行者123 更新时间:2023-11-30 13:00:02 25 4
gpt4 key购买 nike

我想创建一个应用程序,让用户单击导航栏上 V1 上的按钮。这将转到 V2,他们可以在 V2 上的导航栏上按另一个按钮,然后将他们带回 V1,其中底部有选项卡栏 Controller 。我不希望 V2 上有标签栏,也不希望 V2 作为标签栏项目。当我尝试此操作时,当我从 V2 切换回 V1 时,标签栏会在 V1 上消失。

标签栏 Controller -> 标签栏项目 (V1) -> V2(通过 V1 上的导航栏按钮项目) -> 返回 V1(通过 V2 上的导航栏按钮项目)

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

除了此代码之外,我的应用程序中还没有任何其他代码。

我使用的是 Xcode 8.0 和 Swift 3.0

最佳答案

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

var navController: UINavigationController?
var tabController: MyTabController?

如果您想在应用程序启动时显示选项卡栏 Controller ,请将这些代码放入 didFinishLaunchingWithOptions 中的 AppDelegate

 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

如果您想在登录后跳转到选项卡栏或其他内容,请向该 Controller 添加属性

 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
}

然后在选项卡项 View Controller 中,创建 AppDelegate 属性并按上述方式分配委托(delegate)。

方法应该是这样的:

@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
}
}

关于ios - 移回另一个 View 时选项卡栏 Controller 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39952413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com