簡體   English   中英

“的UIWindow? 沒有名為'rootViewController'的成員

[英]'UIWindow?' does not have a member named 'rootViewController'

用UISearchController(Obj-C和Swift)示例代碼下載了Apple的表搜索

我正在使用Xcode 6.3 beta。 打開Swift文件后,我將代碼轉換為Swift 1.2(通過編輯/轉換)。 轉換后,我在AppDelegate.swift得到以下編譯器錯誤(我還注意到以下原始代碼中出現錯誤的行:

 Objective-C method 'application:didFinishLaunchingWithOptions:' provided by method 'application(_:didFinishLaunchingWithOptions:)' conflicts with optional requirement method 'application(_:didFinishLaunchingWithOptions:)' in protocol 'UIApplicationDelegate'

'UIWindow?' does not have a member named 'rootViewController'`

跳出來的東西? 這是AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    // MARK: Properties

    var window: UIWindow?

    // MARK: Application Life Cycle

    // error on the line below
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

        let products = [
            Product(type: Product.deviceTypeTitle, name: "iPhone", year: 2007, price: 599.00),
            Product(type: Product.deviceTypeTitle, name: "iPod", year: 2001, price: 399.00),
            Product(type: Product.deviceTypeTitle, name: "iPod touch", year: 2007, price: 210.00),
            Product(type: Product.deviceTypeTitle, name: "iPad", year: 2010, price: 499.00),
            Product(type: Product.deviceTypeTitle, name: "iPad mini", year: 2012, price: 659.00),
            Product(type: Product.desktopTypeTitle, name: "iMac", year: 1997, price: 1299.00),
            Product(type: Product.desktopTypeTitle, name: "Mac Pro", year: 2006, price: 2499.00),
            Product(type: Product.portableTypeTitle, name: "MacBook Air", year: 2008, price: 1799.00),
            Product(type: Product.portableTypeTitle, name: "MacBook Pro", year: 2006, price: 1499.00)
        ]

        // error on the line below
        let navController = window.rootViewController as! UINavigationController

        // Note we want the first view controller (not the visibleViewController) in case
        // we are being store from UIStateRestoration.
        let tableViewController = navController.viewControllers[0] as! MainTableViewController
        tableViewController.products = products

        return true
    }

    // MARK: UIStateRestoration

    func application(application: UIApplication, shouldSaveApplicationState coder: NSCoder) -> Bool {
        return true
    }

    func application(application: UIApplication, shouldRestoreApplicationState coder: NSCoder) -> Bool {
        return true
    }
}

試試這個,你必須在訪問它之前進行初始化:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {

    // declaration of products like in your above code
    ....

    window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let navController = window!.rootViewController as! UINavigationController           

    let tableViewController = navController.viewControllers[0] as! MainTableViewController
    tableViewController.products = products

    return true
}

我希望這對你有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM