【发布时间】:2016-04-09 02:00:33
【问题描述】:
我有一个涉及UITabBarControllerDelegate 的奇怪问题。
我正在使用以下代码:
import UIKit
class MainTabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = MainTabBarControllerDelegate()
print("did set delegate to \(self.delegate)")
}
}
class MainTabBarControllerDelegate: NSObject, UITabBarControllerDelegate {
func tabBarController(tabBarController: UITabBarController, didSelectViewController viewController: UIViewController) {
print("selected: \(viewController) --> index: \(tabBarController.selectedIndex)")
}
}
然后,在我的 Storyboard 中,我有一个香草 UITabBarController 和两个普通的 UIViewControllers 连接到它。我只是想捕捉标签更改事件,但由于某种原因,我的MainTabBarController 的delegate 没有正确设置。
当我使用上面的代码运行项目时,控制台输出:
did set delegate to nil
它为什么不创建一个适当的MainTabBarControllerDelegate 实例以便可以调用它的委托方法?
【问题讨论】:
-
委托属性通常很弱。您必须在其他地方强烈引用您的代表才能使其保持活力。
-
啊,是的!愚蠢的错误,谢谢!!请将此添加为答案而不是评论,以便我可以接受它并且您得到应得的分数;)@AntonBronnikov
-
完成。是 AFK(来自移动端),所以必须简洁。
标签: ios swift delegates uitabbarcontroller