#ios #swift #uipageviewcontroller #uiwindow
Вопрос:
Когда PageController пытается представить свой контент, я сталкиваюсь со следующим сообщением в консоли:
«Окно[Assert] здесь не должно быть, если только подкласс по ошибке не отправляет это дочернему элементу, когда окно не может быть найдено».
Приложение не падает, оно просто не показывает контент, в котором оно должно отображаться PageController
. Код кажется мне прекрасным:
class RulesPageViewController: UIPageViewController { var rulesDelegate: RulesPageVeiwControllerDelegate? var pageHeadings = ["1st page","2nd","3rd"] var currentIndex = 0 override func viewDidLoad() { super.viewDidLoad() self.dataSource = self self.delegate = self if let startingViewController = contentViewController(at: 0) { self.setViewControllers([startingViewController], direction: .forward, animated: false, completion: nil) } } func contentViewController(at index: Int)-gt; PageContentViewController? { if(index lt; 0 || index gt;= pageHeadings.count) { return nil } if let pageContentViewController = UIStoryboard(name: "GameRules", bundle: nil).instantiateViewController(withIdentifier: "PageContentViewController") as? PageContentViewController{ pageContentViewController.index = index return pageContentViewController } return nil } } extension RulesPageViewController: UIPageViewControllerDelegate { func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) { if completed { if let contentViewController = pageViewController.viewControllers?.first as? PageContentViewController { currentIndex = contentViewController.index rulesDelegate?.didUpdatePageIndex(currentIndex: currentIndex) } } } } extension RulesPageViewController: UIPageViewControllerDataSource { func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -gt; UIViewController? { var index = (viewController as! PageContentViewController).index index -= 1 return contentViewController(at: index) } func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -gt; UIViewController? { var index = (viewController as! PageContentViewController).index index = 1 return contentViewController(at: index) } }
Ответ №1:
Проблема была решена: PageContentViewController соответствовал неправильному классу