ios - 参数标签 '(URL:)' 与任何可用的重载都不匹配

标签 ios swift url swift3

我正在尝试将代码转换为 Swift 3,但收到此错误:

Argument labels '(URL:)' do not match any available overloads

let viewController = VisitableViewController(URL: URL)

这是我的完整代码:

var window: UIWindow?
var navigationController = UINavigationController()
var session = Session()


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    window?.rootViewController = navigationController
    visit(URL: NSURL(string: "http://localhost:9292/")!)
    return true
}

func visit(URL: NSURL) {
    let viewController = VisitableViewController(URL: URL)
    navigationController.pushViewController(viewController, animated: true)
    session.visit(viewController)
}

这是 VisitableViewController :

import UIKit

open class VisitableViewController: UIViewController, Visitable {
    open weak var visitableDelegate: VisitableDelegate?

    open var visitableURL: URL!

    public convenience init(url: URL) {
        self.init()
        self.visitableURL = url
    }

    // MARK: Visitable View

    open private(set) lazy var visitableView: VisitableView! = {
        let view = VisitableView(frame: CGRect.zero)
        view.translatesAutoresizingMaskIntoConstraints = false
        return view
    }()

    fileprivate func installVisitableView() {
        view.addSubview(visitableView)
        view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[view]|", options: [], metrics: nil, views: [ "view": visitableView ]))
        view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[view]|", options: [], metrics: nil, views: [ "view": visitableView ]))
    }

    // MARK: Visitable

    open func visitableDidRender() {
        self.title = visitableView.webView?.title
    }

    // MARK: View Lifecycle

    open override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
        installVisitableView()
    }

    open override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        visitableDelegate?.visitableViewWillAppear(self)
    }

    open override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        visitableDelegate?.visitableViewDidAppear(self)
    }

    /*
     If the visitableView is a child of the main view, and anchored to its top and bottom, then it's
     unlikely you will need to customize the layout. But more complicated view hierarchies and layout 
     may require explicit control over the contentInset. Below is an example of setting the contentInset 
     to the layout guides.

    public override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        visitableView.contentInset = UIEdgeInsets(top: topLayoutGuide.length, left: 0, bottom: bottomLayoutGuide.length, right: 0)
    }
    */
}

最佳答案

我建议:

func visit(url: URL) {
    let viewController = VisitableViewController(url: url)
    navigationController.pushViewController(viewController, animated: true)
    session.visit(viewController)
}

对于 VisitableViewController 初始值设定项,使用 url: 而不是 URL:。我还建议使用 visit 遵循相同的约定,并将 NSURL 替换为 URL

关于ios - 参数标签 '(URL:)' 与任何可用的重载都不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46112365/

相关文章:

php - 通过 URL 传递多个变量并在下一页读取所有变量

mysql - URL 重写 PHP 并从 MySql DB 中提取数据

ios - 如何使用高度计? (增减法)

ios - 无法通过下拉刷新 tableview Controller 中的刷新我的 JSON 数据

iphone - XIB 文件不出现

swift - 如何在显示键盘时自动向上滚动表格?

url - 多语言 URL 对 SEO 的影响

ios - 将 swift 框架添加到工作区 - 使用未解析的标识符

swift - UITesting Xcode 7 : How to tell if XCUIElement is visible?

swift - 如何在 Swift 中使用两种对象对数组进行排序?