gpt4 book ai didi

ios - 索引在 View Controller 中变为零

转载 作者:行者123 更新时间:2023-11-28 12:03:34 25 4
gpt4 key购买 nike

导航数组中 View Controller 的索引始终为零。如果我打印 arrayOfVCs,我仍然可以看到 Controller 列表,我仍然一如既往地获得索引 nil

public func removeFromStack(controller :  UIViewController) -> () {
if let currentWindow = UIApplication.shared.keyWindow {
let arrayOfVCs = (currentWindow.rootViewController as!
UINavigationController).viewControllers
if let index = arrayOfVCs.index(of: controller) {
(currentWindow.rootViewController as!
UINavigationController).viewControllers.remove(at: index)
}
}
}

enter image description here

最佳答案

请注意,在 extension 中,self 指的是您调用此扩展方法的对象,因此您无需获取窗口,获取顶级 VC 之类的。只需使用 self

此外,您将 UserProfileController.self 传递给方法,它不是 View Controller 的对象,而是元类型。如果您没有可访问的 VC 实例并且想使用元类型找到要从堆栈中删除的正确项目,您可以将扩展名更改为如下所示:

extension UINavigationController {
func removeFromStack<T: UIViewController>(vcType: T.Type) {
if let index = viewControllers.index(where: { type(of: $0) == vcType }) {
viewControllers.remove(at: index)
} else {
print("Oops! The type of VC you specified is not in the stack!")
}
}
}

关于ios - 索引在 View Controller 中变为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49830557/

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