[英]UIToolbarItems and UIBarButtonItems not appearing in simulator or getting cut off, am I missing something?
我創建了一個WKWebView
一些編程UIBarButtonItems
。 右上角有一個“打開”按鈕,底部有3個UIToolbarItems
,用於ProgressView
,flexibleSpace和reload按鈕。 我的模擬器無法將這些加載到屏幕上,看起來它在模擬器上未正確加載。
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
var progressView: UIProgressView!
var websites = ["apple.com", "google.com"]
//loadView() func
override func loadView() {
//create an instance of WKWebView()
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
//get URL and make a load URLRequest
guard let url = URL(string: "https://www." + websites[0]) else { return }
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
//set BarButtonItem on the top right of page
navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Open", style: .plain, target: self, action: #selector(openTapped))
//add UIToolbar items with UIBarButtonItems
let spacer = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let reload = UIBarButtonItem(barButtonSystemItem: .refresh, target: webView, action: #selector(webView.reload))
//add progressView
progressView = UIProgressView(progressViewStyle: .default)
progressView.sizeToFit()
let progressButton = UIBarButtonItem(customView: progressView)
//add items to toolbarItems array
toolbarItems = [progressButton, spacer, reload]
navigationController?.isToolbarHidden = false
//create actionSheet UIAlertActionController for bar button drop down
@objc func openTapped() {
let alert = UIAlertController(title: "Open new page!", message: nil, preferredStyle: .actionSheet)
for website in websites {
alert.addAction(UIAlertAction(title: website, style: .default, handler: openPage))
}
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel))
alert.popoverPresentationController?.barButtonItem = self.navigationItem.rightBarButtonItem
present(alert, animated: true)
}
//handlers for each UIAlertAction
func openPage(action: UIAlertAction) {
guard let actionTitle = action.title else { return }
guard let url = URL(string: "https://" + actionTitle) else { return }
webView.load(URLRequest(url: url))
}
//set webView title to web page title
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}
我嘗試過不同的屏幕尺寸,但似乎都沒有讓UIBarButtonItems和UIToolbarItems出現在模擬器上。
您需要在導航控制器中嵌入ViewController
。
打開故事板 - >編輯器 - >嵌入 - >導航控制器。
此外,您的代碼在navigationController?.isToolbarHidden = false
之后缺少大括號以關閉viewDidLoad
方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.