swift2 从UITabBar按钮按下显示模式视图

cnh2zyt3  于 2022-11-06  发布在  Swift
关注(0)|答案(2)|浏览(179)

我的UITabBar中有一个按钮需要显示模态(在Swift 2中)。我搜索了很多,尝试了一些解决方案,但没有一个奏效。我最近找到了这个链接,让它看起来更直观:https://www.hackingwithswift.com/example-code/uikit/how-do-you-show-a-modal-view-controller-when-a-uitabbarcontroller-tab-is-tapped和我试图跟随它,但无济于事。
我的初始视图控制器是我的主表栏控制器class MainTabBarController: UITabBarController。在它的viewDidLoad()中,我添加了代码(我认为链接可能使用了较旧版本的Swift,因此我不得不对链接中的内容进行一些语法更改):self.tabBarController?.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate .
然后我将UITabBarControllerDelegate添加到我的AppDelegate.swift中,并在AppDelegate.swift中实现了以下内容,我还尝试将其放在MainTabBarController中,但也不起作用:
我想指出的是“CreateNavControllerViewController”是我的“CreateViewController”的根视图控制器,这也是我想要显示的。但是我有我中间的标签栏按钮链接(默认的TabBarController到视图链接)到CreateNav,它是创建的rootVC。在模态中,我想在顶部有一个导航栏,这就是为什么我想显示CreateNav。

func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
    print("inside shouldSelect VC")
    if viewController is CreateNavControllerViewController {
        print("    viewController is CreateNavControllerVC")
        if let newVC = tabBarController.storyboard?.instantiateViewControllerWithIdentifier("CreateNavController") {
            print("        if let newVC = ...")
            tabBarController.presentViewController(newVC, animated: true, completion: nil)
            return false
        }
    }
    print("skipped everything, returning true")
    return true
}

没有一个print语句可以打印出来。所以我很难回答。有没有人能提供一个解决方案,如何让UITabBar中的一个按钮在Swift 2中以模态方式呈现视图?

**编辑:**将(shouldSelect viewController:)更改为(shouldSelectViewController viewController:),但仍然没有任何内容。只是普通标签栏视图发生更改,而不是模态视图,不打印任何内容(不调用函数)
**Edit2:**我想我已经弄明白了,设置我的标签栏最初显示的VC继承自UITabBarControllerDelegate,然后添加该函数,并在viewDidLoad()中设置self.tabBarController?.delegate = self。现在似乎可以正常工作了

qzlgjiam

qzlgjiam1#

你应该换衣服
self.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate

self.delegate = UIApplication.sharedApplication().delegate as? UITabBarControllerDelegate
在您的UITabBarController

eivnm1vs

eivnm1vs2#

您的控制器是否嵌套在导航控制器中?如果是,您应该检查导航控制器的第一个视图控制器是否是特定的控制器。

相关问题