ios - 检测标签栏项目选择

标签 ios swift navigation uitabbarcontroller tabbar

为简单起见,我将我的 viewControllers 引用为 VC1、VC2...

我有一个 TabBarController 作为我的根 viewController。它包含 3 个选项卡,每个选项卡包含一个 UITableViewController。所以我在 TabBarController 的索引 0 处有 VC1,在索引 1 处有 VC2,在索引 1 处有 VC3 和索引 2。现在我想检测用户何时点击 TabBarController 的索引 0 以转到VC1。我已经尝试使用 UITabBarDelegate 如下。

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {

    if self.tabBarController?.selectedIndex == 0 {
        // do something
    }
}

当我从 VC1 转到 VC2 并从 VC2 返回 VC1 时,它确实有效。但是,如果我从 VC1 转到 VC3,然后再回到 VC1,它就不起作用了。有人可以解释为什么吗?

我真正想要实现的是用户从 VC2 或 VC1 转到 VC3。现在用户点击一个 tableViewCell 进入 VC4。现在,每当用户回到 VC1 时,我都想调用一个 webService。

最佳答案

不是测试 tabcontroller selectedIndex,而是自己计算选定的索引:

func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {

    let selectedIndex = tabBarController.viewControllers.index(of: viewcontroller)!
    if selectedIndex == 0 {
        // do something
    }

关于ios - 检测标签栏项目选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779612/

相关文章:

css - 用于带子页面的基本垂直导航的 Sitefinity CSS 类

ios - NSURLConnection 无响应

swift - 如何在快速单击时显示工具提示

ios - 如何使用自动布局在自定义 UITableViewCell 中动态设置 UITextView 高度

ios - 如何让 SwiftUI TextField 显示数字但也接受空值

swift - 如何在 Swift 2.0 中使用 guard "strongify"optional self

android - 如何使用导航组件将 fragment 实例保存在bottomNavigationView上

javascript - 将第二个子导航添加到 Accordion 样式菜单

iphone - 在不移动 subview 的情况下更改旋转中心的问题

ios - Facebook请求不返回电子邮件