使用未解析标识符 'checkOrientation'Swift

标签: Xcode Swift2 Swift
发布时间: 2017/3/6 22:52:30
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

当我尝试类型返回我的 Func 我在 AppDalgate.Swift 中会出现此错误

AppDalgate.Swift

  func application (application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
        return checkOrientation(self.window?.rootViewController)

    }

此代码为 ViewController.Swift 的

  func checkOrientation(viewController:UIViewController?)-> Int{

        if(viewController == nil){

            return Int(UIInterfaceOrientationMask.All.rawValue)//All means all orientation

        }else if (viewController is LoginViewController){

            return Int(UIInterfaceOrientationMask.Portrait.rawValue)//This is sign in view controller that i only want to set this to portrait mode only

        }else{

            return checkOrientation(viewController!.presentedViewController)
        }
    }

解决方法 1:

您的应用程序委托在视图控制器中并没有对功能的访问。如果你想要实现这一目标,一个选项将添加到变量 AppDelegate ,将它设置为等于实例化 ViewController 像这样︰

//Add this to your AppDelegate Outside of the methods.
var vc = ViewController()

这样做后,您可以访问 AppDelegate ViewController 的方法如下所示︰

//Inside a method of AppDelegate
//Replace ... with your parameters
vc.checkOrientation(...)

但是,请的记住这不是同一个实例, ViewController 在应用程序已完成启动时,将使用您的应用程序的类。所以如果您尝试使用一种引用在应用程序已启动之后添加的数据的方法,它将无法工作。

此外,请记住, AppDelegate 应保持尽可能简明性能方面的原因。

此外,您可能应该更改您 checkOrientation 函数︰

func checkOrientation(viewController:UIViewController?)-> UIInterfaceOrientationMask {
    if viewController is LoginViewController {
        return UIInterfaceOrientationMask.Portrait
    } else {
        return UIInterfaceOrientationMask.All
    }
}

最后,请考虑删除 checkOrientation 完全和将其逻辑放置 supportedInterfaceOrientationsForWindow 。示例︰

func application (application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask {
   if self.window?.rootViewController is LoginViewController {
      return UIInterfaceOrientationMask.Portrait
   } else {
      return UIInterfaceOrientationMask.All
   }
}
赞助商