Задержка выполнения кода segue и viewWillAppear - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть 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
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...