gpt4 book ai didi

ios - 无法使用方法 swizzling 打印当前的 ViewController 名称

转载 作者:搜寻专家 更新时间:2023-11-01 05:31:41 28 4
gpt4 key购买 nike

<分区>

我想打印 ViewController 名称,而不是在每个 ViewController 中打印屏幕名称是否有任何其他可能性来打印 ViewController 名称使用 ViewController 扩展名?或任何建议?

例如 如果你在登录页面,它应该打印 LoginViewController 如果你移动到主屏幕它应该打印 HomeViewController 我已经试过了下面的代码,但它不打印确切的类名。

extension UIViewController {
@objc dynamic func _tracked_viewWillAppear(_ animated: Bool) {

print("ClassName@: "+String(describing: type(of: self)))
_tracked_viewWillAppear(animated)
}

static func swizzle() {
if self != UIViewController.self {
return
}
let _: () = {
let originalSelector =
#selector(UIViewController.viewWillAppear(_:))
let swizzledSelector =
#selector(UIViewController._tracked_viewWillAppear(_:))
let originalMethod =
class_getInstanceMethod(self, originalSelector)
let swizzledMethod =
class_getInstanceMethod(self, swizzledSelector)
method_exchangeImplementations(originalMethod!, swizzledMethod!);
}()
}

Appdelegate.swift 文件中

func application( _ application: UIApplication, 
didFinishLaunchingWithOptions
launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {

UIViewController.swizzle()

return true
}

输出:-

ClassName@: UIInputWindowController
ClassName@: UISystemKeyboardDockController
ClassName@: UICompatibilityInputViewController
ClassName@: UICompatibilityInputViewController
ClassName@: UICompatibilityInputViewController
ClassName@: UICompatibilityInputViewController
ClassName@: UICompatibilityInputViewController
ClassName@: UISystemKeyboardDockController

但它不是 ViewController 的打印名称。谢谢。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com