以编程方式返回选项卡栏控制器中的视图

Posted

技术标签:

【中文标题】以编程方式返回选项卡栏控制器中的视图【英文标题】:Returning to a view in a Tab Bar Controller Programatically 【发布时间】:2016-07-13 16:19:12 【问题描述】:

我有一个 TabBarController,里面有 5 个 ViewController,在其中一个 ViewController 上,我有一组按钮,可以在 TabBarController 之外加载不同的视图控制器。这些是通过 Modal Segue 加载的,但是我遇到的问题是,当我尝试返回它加载的选项卡栏中的视图但没有选项卡栏本身时,我拥有的代码是:

class GreetingsVC: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    @IBAction func goBack(sender: AnyObject) 

        let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
        let nextViewController = storyBoard.instantiateViewControllerWithIdentifier("anonScreen") as! AnonVC
        self.presentViewController(nextViewController, animated:true, completion:nil)
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    
    */


我怎样才能让它在按下后退按钮时从标签栏控制器呈现视图控制器?

【问题讨论】:

尝试使用self.tabBarController.presentViewController(nextViewController, animated:true, completion:nil) 而不是self.presentViewController(nextViewController, animated:true, completion:nil) 不,仍然会加载底部没有标签栏的视图:( 【参考方案1】:

据我了解,在标签栏控制器中,您已经使用 presentViewController 呈现了 GreetingsVC,并且您想返回上一个视图(其中一个标签栏视图控制器)

你需要使用dismissViewControllerAnimated而不是presentViewController

@IBAction func goBack(sender: AnyObject) 

    dismissViewControllerAnimated(true, completion: nil)

【讨论】:

刚刚尝试过,但仍然没有在关闭时显示标签栏:/ 感谢您的建议!欣赏它 从按钮到 GreetingsVC 你用什么?模态还是显示?我假设您正在使用故事板转场 GreetingsVC 是通过在 modal 上使用故事板 segue 访问的 我更新了我的代码,只保留goBack 函数中的那一行。如果还有问题,请告诉我 这就是我之前尝试过的,但没有成功。还是谢谢

以上是关于以编程方式返回选项卡栏控制器中的视图的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式使用 Swift 3 在所有视图控制器中显示选项卡栏?

以编程方式将选项卡栏控制器添加到当前 App Flow

在选项卡栏控制器中选择时以模态方式呈现视图控制器

在启动时以编程方式为 5 个选项卡栏项目设置选项卡栏标题,其中 4 个嵌入在导航控制器中,1 个没有。目标 C

如何从 UI 视图控制器呈现选项卡栏控制器

将浮动操作按钮添加到选项卡栏控制器内的视图控制器