'UIViewControllerHierarchyInconsistency', причина: 'контроллер дочернего представления: должен иметь родительский контроллер представления: - PullRequest
0 голосов
/ 14 июля 2020

Почему эта ошибка возникает на симуляторе Xcode 11, а не на iPad mini adho c, где он работает плавно? Следующий вывод выводится в отладчике после сбоя. Кроме того, как это можно исправить?

'UIViewControllerHierarchyInconsistency', reason: 'child view controller:<Player.Player: 0x7fcd6898aa00> should have parent view controller:<Cards.DetailViewController: 0x7fcd67d781e0> but actual parent is:<Superapps.PlayerViewController: 0x7fcd67d67490>'

Вывод отладчика

... введите описание изображения здесь

***PlayerViewController.Swift***

//  PlayerViewController.Swift 


import UIKit
import Cards

let videoUrl = URL(string: "")!
let localUrl = Bundle.main.url(forResource: "My Movie 14", withExtension: "mp4")



class PlayerViewController: UIViewController {

@IBOutlet weak var btn: UIButton!
@IBOutlet weak var card: CardPlayer!

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: animated)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: animated)
}

override func viewDidLoad() {
    super.viewDidLoad()
    
    //btn rounded corners
    btn.layer.cornerRadius = 10
    btn.clipsToBounds = true
    
    card.videoSource = localUrl
    card.shouldDisplayPlayer(from: self)    //Required.
    
    card.playerCover = UIImage(named: "rainbow!")!  // Shows while the player is loading
    card.playImage = UIImage(named: "logo (1) copy.png")!  // Play button icon
    
    card.isAutoplayEnabled = false
    card.shouldRestartVideoWhenPlaybackEnds = true
    
    card.title = "Superapps!"
    //watch our commercial to learn more
    card.subtitle = ""
    card.category = "Professional Ecommerce Apps!"

    let cardContent = storyboard?.instantiateViewController(withIdentifier: "CardContent5")
    card.shouldPresent(cardContent, from: self)
    
}


}

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

Обновление

Когда следующие два строки swift закомментированы, приложение больше не вылетает.

let cardContent =     storyboard?.instantiateViewController(withIdentifier: "CardContent5")
   
 card.shouldPresent(cardContent, from: self)

Как можно изменить этот код, чтобы сохранить функциональность?

Обновление 2

Пробовал следующее. Приложение не сканирует sh, но кнопка ничего не загружает.

let cardContent = storyboard?.instantiateViewController(withIdentifier: "CardContent5")
    
card.shouldPresent(cardContent, from:storyboard?.instantiateViewController(withIdentifier: "CardContent5"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...