永远不会调用UITabBarControllerDelegate的shouldSelect方法

时间:2018-01-19 00:32:48

标签: ios swift uitabbarcontroller

我正在使用Swift 4和XCode 9.我正在尝试以编程方式控制我的UITabBarController中的导航。根据{{​​3}},我需要实现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
    }
}

知道我做错了吗?

3 个答案:

答案 0 :(得分:1)

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

override func viewDidLoad() {
    super.viewDidLoad()

    self.delegate = self // or just "delegate = self"
}

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

答案 1 :(得分:0)

要检测所选项目的事件,您必须覆盖 didSelect 方法。

(glm.sol <- glm(dat$y~dat$X, family=binomial()))$coefficients
> (Intercept)      dat$X1      dat$X2      dat$X3      dat$X4      dat$X5      dat$X6      dat$X7 
> -0.07071882 -0.08670003  0.16436630  0.01130549  0.17302058  0.03821008  0.08836471 -0.16578959 
>      dat$X8      dat$X9     dat$X10 
> -0.07515477 -0.08555075  0.29119963 

# works when correct analytic gradient is specified
(nlm.sol1 <- nlm(p=runif(dat$p+1), f=logistic_ll, gr=TRUE,  y=dat$y, x=dat$X))$estimate
> [1] -0.07071879 -0.08670005  0.16436632  0.01130550  0.17302057  0.03821009  0.08836472
> [8] -0.16578958 -0.07515478 -0.08555076  0.29119967

# fails to converge in 5000 iterations when correct analytic hessian is specified
(nlm.sol2 <- nlm(p=runif(dat$p+1), f=logistic_ll, gr=TRUE, he=TRUE,   y=dat$y, x=dat$X, hessian = TRUE, iterlim=5000, check.analyticals=TRUE))$estimate

> [1]  0.31602065 -0.06185190  0.10775381 -0.16748897  0.05032156  0.34176104  0.02118631
> [8] -0.01833671 -0.20364929  0.63713991  0.18390489

答案 2 :(得分:0)

正确的实现方法是 DidSelect.....