черный экран виден при перетаскивании viewcontroller в tabbarcontroller в Swift? - PullRequest
0 голосов
/ 05 марта 2020

Когда я представляю из TabbarController для внешнего Viewcontroller, представляющего правильно, а также уволить правильно. Но когда я перетаскиваю, чтобы закрыть ViewController, он показывает черный экран, используя UIPanGestureRecognizer.

От TabbarController до ViewController Present Code

  let newVC = self.storyboard?.instantiateViewController(withIdentifier: "ExampleViewController") as! ExampleViewController
  self.definesPresentationContext = true
  newVC.modalPresentationStyle = .overCurrentContext
  self.present(newVC, animated: true, completion: nil)

Отклонить ExampleViewController для кода TabbarController

override func viewDidLoad()
{
    super.viewDidLoad()

     let gestureRecognizer = UIPanGestureRecognizer(target: self,
                                                   action: #selector(panGestureRecognizerHandler(_:)))
    view.addGestureRecognizer(gestureRecognizer)

}

@IBAction func panGestureRecognizerHandler(_ sender: UIPanGestureRecognizer) {
    let touchPoint = sender.location(in: view?.window)
    var initialTouchPoint = CGPoint.zero

    switch sender.state {
    case .began:
        initialTouchPoint = touchPoint

    case .changed:
        if touchPoint.y > initialTouchPoint.y {
            view.frame.origin.y = touchPoint.y - initialTouchPoint.y

        }
    case .ended, .cancelled:
        if touchPoint.y - initialTouchPoint.y > 200 {

            self.navigationController?.popViewController(animated: false)
        } else {
            UIView.animate(withDuration: 0.2, animations: {
                self.view.frame = CGRect(x: 0,
                                         y: 0,
                                         width: self.view.frame.size.width,
                                         height: self.view.frame.size.height)

            })
        }
    case .failed, .possible:
        break
    @unknown default:
        break
    }
}

Примечание: - Иерархия моего проекта, подобная этому NavigationController -> SomeViewControllers -> TabbarViewController -> ExampleViewController

enter image description here

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Попробовал свой код, просто укажите NavigationController между экраном вкладок и контроллером представления.

let newVC = self.storyboard?.instantiateViewController(withIdentifier: "ExampleViewController") as! ExampleViewController
newVC.modalPresentationStyle = .overCurrentContext
self.present(newVC, animated: true, completion: nil)

И на следующем экране используется та же функция, что и выше, без черного экрана.

Или вы можете использовать нижнюю строку в AppDelegate, как указано здесь: { ссылка }

window?.backgroundColor = UIColor.white

0 голосов
/ 05 марта 2020

Вставить контроллер навигации между

TabbarViewController -> ExampleViewController

Так должно быть:

TabbarViewController -> NavigationController -> ExampleViewController

Просто выберите ExampleViewController и выберите встраивать контроллер навигации в раскадровку. И используйте метод Segue pu sh.

...