Nano Hash - криптовалюты, майнинг, программирование

Удаление displayModeButton в UISplitViewController в iOS

Я хочу удалить displayModeButton из панели навигации detailViewController в splitveiwconroller. Я попытался установить leftBarButtionItem.isEnable = false в файле AppDelegate.swift (как показано ниже)

if let splitViewController = self.window!.rootViewController as? UISplitViewController {
            let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
            navigationController.topViewController!.navigationItem.leftBarButtonItem?.isEnabled = false
            }

он изначально скрывает кнопку режима отображения при запуске приложения. Но когда я прокручиваю вправо, чтобы открыть основной вид, а затем прокручиваю влево, чтобы закрыть контроллер основного вида, снова появляется кнопка режима отображения. Пожалуйста, помогите мне скрыть displayModeButton от контроллера подробного просмотра.


Ответы:


1

Сделайте то же самое в мастере viewController viewWillAppear:

   let appDelegate = UIApplication.shared.delegate as! AppDelegate
    appDelegate.window!.rootViewController = controller 
if let splitViewController = appDelegate.window!.rootViewController as? UISplitViewController {

let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
navigationController.topViewController!.navigationItem.leftBarButtonItem?. isEnabled = false
navigationController.topViewController!.navigationItem.leftBarButtonItem?. tintColor = UIColor.clearColor()
     }

ИЛИ, если выше не работает, используйте код ниже в AppDelegate

navigationController.topViewController!.navigationItem.setLeftBarButton(nil, animated: true)  
17.02.2020
  • все еще после закрытия главного контроллера представления снова появляется displaymodeButton. 17.02.2020
  • получение этой ошибки: значение типа «UIBarButtonItem» не имеет члена «isHidden». 17.02.2020
  • Получение той же проблемы после устранения этой ошибки: «включено» было переименовано в «isEnabled» 17.02.2020
  • Вы пробовали это: navigationController.topViewController!.navigationItem.setLeftBarButton (ноль, анимированный: правда) 17.02.2020
  • Я только что попробовал то же самое. Тем не менее, он снова появляется после закрытия основного вида. 17.02.2020
  • Вы уверены, что делаете это в представленииWillAppear 17.02.2020
  • Поставьте точку останова в viewWillAppear, если она не вызывается, затем используйте NSNotification при отклонении и выполните тот же код. 17.02.2020
  • да, я делаю это во viewWillAppear из masterviewcontroller. 17.02.2020
  • Хорошо, пожалуйста, поставьте точку останова в viewWillAppear и проверьте, поняли вы ее или нет. 17.02.2020
  • Привет @Daljeet, я попробовал navigationController.topViewController!.navigationItem.setLeftBarButton(nil, анимированный: true) в didFinishLaunchingWithOptions Appdelegate, теперь он работает. Не нужно добавлять в viewWillAppear. 18.02.2020
  • Привет, Далжит, этот код отлично работает на iPad, но не работает на iPhone. Я нашел еще один способ navigationController.topViewController!.navigationItem.setHidesBackButton(true, анимированный: true), который скрывает кнопку как на iPad, так и на iPhone, но когда я использую это, я не могу открыть основной вид в iPhone, для iPad это работает нормально. Вы знаете, как заставить его работать на iPhone? 19.02.2020
  • Это должно работать на обоих, не работает из-за какой-то другой проблемы, вы можете создать новый билет. Спасибо! 19.02.2020
  • Спасибо за вашу помощь, @Daljeet, я создам новый тикет по этому вопросу. 19.02.2020

  • 2

    В качестве альтернативы ответу Далджита мы также можем использовать navigationItem.setHidesBackButton на контроллере подробностей или использовать это в didFinishLaunchingWithOptions AppDelegate.swift:

    if let splitViewController = appDelegate.window!.rootViewController as? UISplitViewController {
    
    let navigationController = splitViewController.viewControllers[splitViewController.viewControllers.count-1] as! UINavigationController
    navigationController.topViewController!.navigationItem.setHidesBackButton(true, animated: true)
    }
    
    18.02.2020
  • В качестве альтернативы методу setHidesBackButton мы также можем использовать detailViewController.navigationItem.hidesBackButton = true 18.02.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..