我有一个项目,只要屏幕上出现任何View Controller(记录View Controller的名称),我就需要记录分析事件。
我试图通过调用分析SDK来避免乱丢所有现有的View Controller类。
我尝试制作一个AnalyticsViewController,我的所有View控制器都会将此View Controller子类化,然后在AnalyticsViewController类的viewDidLoad方法中添加analytics事件。但是这种方法的问题在于AnalyticsViewController没有来自哪个子视图控制器。
我使用的是Swift 3.0。我相信Swift凭借其强大的语言功能应该能够为我提供一些抽象。
在没有乱丢所有View Controllers的情况下,有没有办法解决这个问题?
答案 0 :(得分:1)
你走在正确的轨道上。制作UIViewController父类是个好主意。
在viewDidLoad方法中,您只需添加:
let className = NSStringFromClass(self.classForCoder)
它将为您提供当前加载的视图控制器的名称,然后您可以在事件中使用该名称来指定实际加载的视图控制器。
编辑:添加了示例。 所以你父母的viewDidLoad看起来像这样:
override func viewDidLoad() {
super.viewDidLoad()
let className = NSStringFromClass(self.classForCoder)
sendEvent(withViewControllerName: className)
}
答案 1 :(得分:0)
@JPetric给出的答案是一个了不起的起点。我只需要做一些修改就可以正常工作。
我已将其放在我的AnalyticsViewController中以检索当前子类的名称。
private func currentClassName() -> String? {
return NSStringFromClass(self.classForCoder).components(separatedBy: ".").last
}