我正在尝试将代码转换为 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/