【发布时间】:2015-08-17 11:31:25
【问题描述】:
我尝试实现UITabBar,但现在我无法在选择项目时从方法中检索回调。因此,是否有可能只创建一个@IBAction func?还是我需要做其他事情?
【问题讨论】:
标签: ios swift uikit uitabbar uitabbaritem
我尝试实现UITabBar,但现在我无法在选择项目时从方法中检索回调。因此,是否有可能只创建一个@IBAction func?还是我需要做其他事情?
【问题讨论】:
标签: ios swift uikit uitabbar uitabbaritem
为了实现 UITabBar 按钮,您的视图控制器应符合 UITabBarDelegate 协议。你需要实现:
斯威夫特:
func tabBar(_ tabBar: UITabBar, didSelectItem item: UITabBarItem!)
目标-c:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
您还需要在 ViewController 的 viewDidLoad 中设置委托 (tabBar.delegate = self)
编辑:Swift 3 答案:
func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
}
【讨论】:
您的视图控制器应符合UITabBarDelegate 并实现:
- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
当用户选择一个选项卡(即UITabBarItem)时调用此方法。
【讨论】:
class MyClass: UITabBarItem, UITabBarDelegate { class MyClass: UITabBar, UITabBarControllerDelegate, UITabBarDelegate { 这些实现中哪些是正确的?这个编码也是正确的:func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { 仅供参考,我断开了默认类并连接到新的自定义类,但它仍然无法正常工作(在main.storyboard)。
我终于解决了这个问题。我在 Delegator 类和普通类中遇到了一些麻烦。
这解决了我的问题:主控制器类中的tabBar.delegate = self
【讨论】: