import UIKit
import SwiftyDropbox
class NotesViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, NotesviewDelegate {
var userText:[String] = []
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
print("View Did Load Notes view controller")
}
override func viewWillAppear(_ animated: Bool) {
print("View will Appear")
self.tabBarController?.navigationItem.title = "Notes"
let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController))
self.tabBarController?.navigationItem.rightBarButtonItem = sendButton
self.automaticallyAdjustsScrollViewInsets = false
}
override func viewDidAppear(_ animated: Bool) {
print("View Did appear Notes view controller")
didDoneButtonPressed()
}
func goToNoteEditorViewController() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
guard let vc = storyboard.instantiateViewController(withIdentifier:"NoteEditorViewID") as? NoteEditorViewController else{
return
}
vc.delegate = self
self.navigationController?.present(vc, animated: true, completion: nil)
}
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return userText.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell{
let cell = UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = userText[indexPath.row]
print("The cell is \(cell)")
return (cell)
}
public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){
let controller = UIStoryboard(name: "Main", bundle: nil)
guard let viewController = controller.instantiateViewController(withIdentifier:"TextDisplayID") as? TextDisplayViewController else{
return
}
let indexPath = tableView.indexPathForSelectedRow
let currentCell = tableView.cellForRow(at: indexPath!)!
let text = currentCell.textLabel!.text ?? ""
print(currentCell.textLabel!.text ?? "")
viewController.textTitle = text
navigationController?.pushViewController(viewController, animated: true)
}
func didDoneButtonPressed() {
let userDefaults = UserDefaults()
if let dictionary = userDefaults.dictionary(forKey: "UserNotes"){
if let dictionaryTexts = dictionary as? [String : String] {
userText = [String](dictionaryTexts.keys)
print("array values: \(userText)")
self.tableView.reloadData()
}
}
}
}
上記のプログラムでは、実行時にviewDidAppearは呼び出されませんが、なぜこれが発生するのか説明できますか?
_super.viewWillAppear
_およびsuper.viewDidAppear()
を呼び出す必要があります
_override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated: animated)
print("View will Appear")
self.tabBarController?.navigationItem.title = "Notes"
let sendButton = UIBarButtonItem(title: "New", style: .plain, target: self, action: #selector(goToNoteEditorViewController))
self.tabBarController?.navigationItem.rightBarButtonItem = sendButton
self.automaticallyAdjustsScrollViewInsets = false
}
_
また
_override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated: animated)
print("View Did appear Notes view controller")
didDoneButtonPressed()
}
_
[〜#〜]編集[〜#〜]
UITabBarController
をサブクラス化したようです。 TabBarControllerで、super.viewWillAppear()
および_super.viewDidAppear
_を呼び出す必要があります
_class YourCustomTabBarController : UITabBarController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
}
}
_