アプリケーションには2つのViewControllerがあります。最初のものはWebViewとナビゲーションバーが上にあり、もう1つは訪問されたURLを表示するTableViewです。スクリーンショットとコードをご覧ください。 ボタンをクリックした後、現在のユーザーが訪問しているURLを保存すると、TableViewは空になります。私はTableViewを最初にテストしました。これはうまくセットアップされています。問題を見つけるのを助けてください。ところで、var savedURLs = [String](I didn't put the other half of bracket as it won't show correctly if I put it.)
TableViewが空の理由
import UIKit
class BrowserViewController: UIViewController {
@IBOutlet weak var browser: UIWebView!
@IBAction func saveButtonPressed(sender: AnyObject) {
if let currentURL = browser.request?.URL?.absoluteString {
savedURLs.append(currentURL)
NSUserDefaults.standardUserDefaults().setObject(savedURLs, forKey: "savedURLs")
}
}
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "https://www.google.com")!
let request = NSURLRequest(URL: url)
browser.loadRequest(request)
}
}
import UIKit
var savedURLs = [String](
class SavingViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var savingTableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
savingTableView.delegate = self
savingTableView.dataSource = self
if NSUserDefaults.standardUserDefaults().objectForKey("savedURLs") != nil {
savedURLs = NSUserDefaults.standardUserDefaults().objectForKey("savedURLs") as! [String]
}
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return savedURLs.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("SavingCell")
cell!.textLabel?.text = savedURLs[indexPath.row]
return cell!
}
override func viewDidAppear(animated: Bool) {
savingTableView.reloadData()
}
}
クラス外でテーブルビューのデータソースとして使用される変数を宣言しないでください! – vadian