Var*_*ria 4 uiviewcontroller uinavigationcontroller ios swift swift3
我想在Swift 3中与UIViewController进行比较,但是有一些错误
extension UINavigationController
{
func myPopToViewController(viewController:UIViewController, animated:Bool) -> UIViewController? {
var arrViewControllers:[UIViewController] = []
arrViewControllers = self.viewControllers
for vc:UIViewController in arrViewControllers {
if(vc.isKind(of: viewController) ) // This Line gives me error
{
return (self.navigationController?.popToViewController(vc, animated: animated)?.last)!
}
}
return nil
}
}
Run Code Online (Sandbox Code Playgroud)
/Users/varunnaharia/Documents/Projects/appname/appname/Public/UINavigationController+Extra.swift:18:30:无法将'UIViewController'类型的值转换为预期的参数类型'AnyClass'(又名'AnyObject.Type')
如果尝试使用
if(vc is viewController)
Run Code Online (Sandbox Code Playgroud)
它给
/Users/varunnaharia/Documents/Projects/appname/appname/Public/UINavigationController+Extra.swift:18:22:使用未声明的类型'viewController'
我通过这个称呼它
self.navigationController?.popOrPopToViewController(viewController: MyUIViewController(), animated: false)
Run Code Online (Sandbox Code Playgroud)
小智 12
for viewsController in arrViewControllers
{
if(viewsController.isKind(of: YourControllerClassName.self)){
}
}
Run Code Online (Sandbox Code Playgroud)
Swift 4 希望它对你有用
extension UINavigationController {
func myPopToViewController(viewController:UIViewController, animated:Bool) {
var arrViewControllers:[UIViewController] = []
arrViewControllers = self.viewControllers
for vc:UIViewController in arrViewControllers {
if(vc.isKind(of: viewController.classForCoder)){
(self.popToViewController(vc, animated: animated))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
在 swift 中,我们使用 is代替isKind(of:).
is用于检查type of the object.
所以你可以使用,
if(vc is UIViewController)
Run Code Online (Sandbox Code Playgroud)
但我认为你在这里试图 match the 2 references of UIViewController。
因此,您需要使用===而不是is. 此运算符用于匹配 2 个相同类型的引用。
if(vc === viewController)
Run Code Online (Sandbox Code Playgroud)
如果您想与特定视图控制器进行比较,您必须比较它们的引用。
尝试这个...
if(vc === viewController) )
{
return (self.navigationController?.popToViewController(vc, animated: animated)?.last)!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7662 次 |
| 最近记录: |