当前位置: 首页 > 面试题库 >

检测何时按下标签栏项目

齐凯康
2023-03-14
问题内容

我有一个根视图控制器,没有将其设置为故事板上的任何视图控制器的自定义类。相反,我所有的视图控制器都将此类子类化。

// RootViewController
class RootViewController: UIViewController, UITabBarDelegate {

    // This is not getting executed on any of the view controllers
    func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
        print("ddd")
    }
}

// Subclassing it 
class TopStoriesViewController: RootViewController {

}

但是,当在视图控制器上按下tabbaritem时,我似乎正在做某事,该控件是rootviewcontroller的子类,即消息未打印。


问题答案:

您不希望视图控制器的基类是UITabBarDelegate。如果要这样做,则所有视图控制器子类都将是标签栏委托。我认为您想要做的是扩展UITabBarController,如下所示:

class MyTabBarController: UITabBarController, UITabBarControllerDelegate {

然后,在该类中,重写viewDidLoad,然后在其中将委托属性设置为self:

self.delegate = self

注意:这是在设置选项卡栏控制器委托。标签栏具有自己的委托(UITabBarDelegate),由标签栏控制器管理,并且您不允许更改。

因此,此类现在既是UITabBarDelegate(因为UITabBarController实现了该协议),又是UITabBarControllerDelegate,并且您可以根据需要重写/实现那些委托的方法,例如:

// UITabBarDelegate
override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {
    print("Selected item")
}

// UITabBarControllerDelegate
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
    print("Selected view controller")
}

我猜您可能对后者更感兴趣。查阅文档,以查看每个代理提供的内容。

最后一件事,在您的情节提要中(假设您正在使用情节提要),将标识栏控制器的类设置为Identity
Inspector中的MyTabBarController,您就很好了。

迅捷3/4

// UITabBarDelegate
override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
    print("Selected item")
}

// UITabBarControllerDelegate
func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
    print("Selected view controller")
}


 类似资料:
  • 问题内容: 我有一个JComboBox的子类。我尝试使用以下代码添加一个键侦听器。 但是,这不能正确检测用户何时按下一个键。实际上根本没有调用它。我添加的这个监听器是否错误?还有其他添加方式吗? 问题答案: 关键事件不是在框本身上触发的,而是在其编辑器上触发的。您需要将keyListener添加到JComboBox的编辑器中,而不是直接添加到框中: 编辑:固定方法调用。

  • 假设有几个以编程方式创建的按钮,并且有一个通用的按钮处理程序。 如何理解处理器内部哪个按钮被按下? 而不在函数调用中传递一些特殊的东西。那不行:< code > onButtonClicked(" button " I); 例如,在JavaScript中,在处理程序内部有< code>$(this),它可以立即“理解”按下了哪个按钮。 也许在颤振中也有类似的机制?我想在按钮上挂起属性(事先不知道哪

  • 标签栏是一种特殊情况的工具栏,它包含图标(或者是带有文案的图标),而不是普通的文本,并且和标签页一起使用。 标签栏布局 标签栏和工具栏基本一致,但是它有额外的"tabbar"类: <div class="toolbar tabbar"> <div class="toolbar-inner"> <a href="#tab1" class="tab-link active">

  • 我想知道在多个按钮的列表中按下了哪个按钮。例如,如果按下了第二个按钮,则代码会检测到按下第二个向下的按钮,并返回类似于 。但是,我不知道该怎么做。当我搜索时,jQuery参与其中,但我没有使用jQuery。代码如下: 我尝试使用EventListner,通过将EventListner添加到创建的每个按钮,但这并不能区分单个按钮。请注意,每个按钮都有一个id为和一个类。 如果有人能帮忙,谢谢!

  • 问题内容: 未调用音量按钮通知功能。 码: 在viewWillAppear中被调用 无论哪种情况,代码都不会到达print语句。 我正在尝试两种不同的方法来做到这一点,但都没有用。 我已遵循以下步骤:检测iPhone的音量按钮按下了吗? 问题答案: 使用第二种方法,密钥路径的值应为。那就是我们正在观察的财产。因此将代码更改为

  • 我正在用MCP(Mod Coder Pack)制作我自己的Minecraft客户端。 但我不知道如何才能检测例如在更新方法中,如果鼠标按钮被按下,以及哪个。 Im使用MCP 9.10(Minecraft 1.8) 我在谷歌也在这个平台上搜索,但我什么也没找到。 我希望你们中有人能帮助我。