У меня есть SideMenu для загрузки различных страниц. Я хочу, чтобы пользователь щелкнул по выбору категории в меню, и это вызывает (с помощью push-перехода) соответствующий вид для отображения. Когда отображается вид, я хочу удалить кнопку «назад», потому что я хочу также очистить стек навигации, чтобы они не могли вернуться назад.
У меня все это работает в принципе, но когда пользователь выбирает категорию в меню, есть короткий момент, когда кнопка «Назад» отображается при выполнении перехода и загрузке нового представления.
Код моего бокового меню:
import UIKit
final class MenuTableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController!.toolbar.isHidden = true
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let vc = segue.destination as? CaseListViewController
switch segue.identifier {
case "cv":
vc?.menuCat = "cv"
case "acutelyill":
vc?.menuCat = "acutelyill"
case "children": vc?.menuCat = "children"
case "digestivehealth": vc?.menuCat = "digestivehealth"
case "endoflife": vc?.menuCat = "endoflife"
case "ent": vc?.menuCat = "ent"
case "eye": vc?.menuCat = "eye"
case "genetics": vc?.menuCat = "genetics"
case "men": vc?.menuCat = "men"
case "mental": vc?.menuCat = "mental"
case "metabolic": vc?.menuCat = "metabolic"
case "msk": vc?.menuCat = "msk"
case "neuro": vc?.menuCat = "neuro"
case "elderly": vc?.menuCat = "elderly"
case "respiratory": vc?.menuCat = "respiratory"
case "sexual": vc?.menuCat = "sexual"
case "skin": vc?.menuCat = "skin"
case "women": vc?.menuCat = "women"
default: vc?.menuCat = "acutelyill"
}
} }
И представление принимающего видаWillAppear:
override func viewWillAppear(_ animated: Bool) {
if let count = self.navigationController?.viewControllers.count {
if count > 2
{
self.navigationController?.viewControllers.remove(at: count - 2)
}
}
self.navigationItem.setHidesBackButton(true, animated: false)
//To change Navigation Bar Background Color
UINavigationBar.appearance().barTintColor = UIColor(red:0.31, green:0.39, blue:0.40, alpha:1.0)
//To change Back button title & icon color
UINavigationBar.appearance().tintColor = UIColor.white
//To change Navigation Bar Title Color
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
self.navigationController?.toolbar.barTintColor = UIColor(red:0.31, green:0.39, blue:0.40, alpha:1.0)
allAlbums = LibraryAPI.shared.getCases()
tableView.dataSource = self
// Filter the main array to match the passed case category
allAlbums = allAlbums.filter { $0.category == menuCat}
// tableView.backgroundView = UIImageView(image: UIImage(named: "bg.png"))
tableView.contentInset = UIEdgeInsets(top: 20,left: 0,bottom: 0,right: 0)
//Reload the table
self.tableView.reloadData()
}
Я не уверен, почему действие затягивается /задерживается?
РЕДАКТИРОВАТЬ
Я понял, что это связано с моей функцией подготовки перехода, но с использованием
navigationController?.navigationBar.topItem?.hidesBackButton = true
Кажется, неработай.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Check not trying to pull sidemenu actions
if segue.identifier != "sidemenu"
{
// Get information about case
let indexPath = self.tableView.indexPathForSelectedRow
let free = allAlbums[indexPath!.row].free
if free == "1"
{
if segue.destination is CaseViewController
{
let vc = segue.destination as? CaseViewController
vc?.title = allAlbums[indexPath!.row].title
}
}
else {
}
}
else
{
navigationController?.navigationBar.topItem?.hidesBackButton = true
}
}