UITabBarControllerDelegate 的 shouldSelect 方法从未被调用

Phi*_*hil 1 uitabbarcontroller ios swift

我正在使用 Swift 4 和 XCode 9。我试图在我的 UITabBarController 中以编程方式控制导航。根据Apple 的文档,我需要实现该UITabBarControllerDelegate协议。但是,我实现的方法从未被调用:

import UIKit

class TabBarController: UITabBarController, UITabBarControllerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        tabBarController?.delegate = self
    }

    func tabBarController(_ tabBarController: UITabBarController,
            shouldSelect viewController: UIViewController) -> Bool {
        print("Should go here...")
        return true
    }
}
Run Code Online (Sandbox Code Playgroud)

知道我做错了什么吗?

rma*_*ddy 5

您的问题是您设置了错误的委托。更新viewDidLoad至:

override func viewDidLoad() {
    super.viewDidLoad()

    self.delegate = self // or just "delegate = self"
}
Run Code Online (Sandbox Code Playgroud)

这个想法是你希望这个选项卡控制器成为它自己的委托。

  • @LeoDabus 如果他希望选项卡控制器决定是否可以选择给定的选项卡,则不会。 (2认同)