声明仅在文件范围(扩展名)

时间:2016-06-24 20:17:19

标签: swift swift2 ios9 xcode7

我尝试使用navigationcontroller以纵向模式制作我的应用程序 我在使用Xcode7Swift 2以及目标系统IOS 9.3时遇到此错误 声明仅在文件范围内有效

        extension UINavigationController {
            public override func supportedInterfaceOrientations() -> Int {
                return visibleViewController.supportedInterfaceOrientations()
            }
            public override func shouldAutorotate() -> Bool {
                return visibleViewController.shouldAutorotate()
            }
        }

        extension UITabBarController {
            public override func supportedInterfaceOrientations() -> Int {
                if let selected = selectedViewController {
                    return selected.supportedInterfaceOrientations()
                }
                return super.supportedInterfaceOrientations()
            }
            public override func shouldAutorotate() -> Bool {
                if let selected = selectedViewController {
                    return selected.shouldAutorotate()
                }
                return super.shouldAutorotate()
            }
        }

Thnx

1 个答案:

答案 0 :(得分:9)

错误信息非常清楚。你不能在extension声明中,在class声明中声明任何内容struct。它必须在所有内容之外,在包含文件的顶层。它周围一定没有花括号。

您尚未显示声明此extension的上下文,但很明显围绕它大括号,或者您不会收到错误!

但无论如何,无论您在何处声明,您的扩展程序都是非法的:您无法在扩展程序中执行override。 (见我的回答here。)