swift 3错误xcode 8.1在分配rootviewcontroller时说它是一个get-only属性

时间:2016-11-13 12:01:25

标签: swift swift3 ios10

我正在将我的项目从swift 2.2迁移到3.0,当我遇到这个奇怪的错误,这不允许我在app delegate didfinishlaunching中设置rootviewcontroller。 self.window?.rootViewController = self.container.resolve(DPSlideMenuController.self)! enter image description here

2 个答案:

答案 0 :(得分:0)

我猜您正在使用此库SlideMenuControllerSwift。如果你在DidFinishLaunching函数中显示整个代码会很棒。 无论如何,尝试执行以下操作:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

// create viewController code...

let slideMenuController = SlideMenuController(mainViewController: mainViewController, leftMenuViewController: leftViewController, rightMenuViewController: rightViewController)
self.window?.rootViewController = slideMenuController
self.window?.makeKeyAndVisible()    

return true

}

答案 1 :(得分:0)

最后修好了。问题是在其中一个协议扩展中有一个名为rootViewController的var。

var rootViewController: UIViewController {
        return (UIApplication.shared.keyWindow?.rootViewController)!
    }

使用Swift 2.2工作得很好,但是在swift 3上让编译器感到困惑。更改了名称和编译的代码。