AppDelegate에서 여러보기 컨트롤러를 인스턴스화하는 방법은 무엇입니까?
3 개의보기 컨트롤러 (V1, V2 및 V3)를 보유하는 컨테이너보기가 있습니다. 왼쪽 또는 오른쪽으로 스 와이프하여 A, B 또는 C에서 전환 할 수 있습니다. A 또는 B 모두 자체 컬렉션보기를 포함합니다. A 또는 B 내의 콜렉션 뷰에서 임의의 셀을 탭하면, PlayerVC (위의 그림에서 Player라는 이름의 ^^)가 시작되고 AVPlayer를 사용하여 비디오가 재생되기 시작합니다.
문제는 유니버설 링크를 사용하기 때문에 사용자가 곧바로 playerView로 이동하여 비디오를 재생하지만 완료 버튼을 누르면 응용 프로그램이 충돌합니다. 뷰 컨트롤러의 나머지 부분은 초기화되지 않았기 때문에 제가 생각하는 문제는 무엇입니까? 컨테이너 뷰와 다른 뷰 컨트롤러를 어떻게 초기화합니까? 또는 이것이 문제가 아닌 경우 문제가 무엇인지 알려주십시오.
다음은 일부 샘플 코드가 포함 된 앱 대리인입니다. 도와 주실 수있는 경우 코드를 제공해주십시오!
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
if let pagingViewController = window?.rootViewController as? PagingViewController {
pagingViewController.videoPlaybackManager = videoPlaybackManager
}
return true
}
class AppDelegate: UIResponder, UIApplicationDelegate {
// Other App Delegate methods.....
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool {
// 1) Make sure the passed `user activity` has expected characteristics.
guard userActivity.activityType == NSUserActivityTypeBrowsingWeb, let url = userActivity.webpageURL else {
return false
}
// HELP: I need to get to `PlayerVC` from here?
return true
// If we can't do the above we default to opening the page in safari
}
}
편집 - 당신이 UIViewController
당신이 할 수있는 적절한 아이 설정, UIPageViewController
를 처리하는 경우 내가 PagingViewController 내부 (컨테이너보기)
private func setupViewControllers() {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
page1 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.feedViewController.rawValue) as! FeedViewController
page1.view.translatesAutoresizingMaskIntoConstraints = false
page1.delegate = self
scrollView.addSubview(page1.view)
addChildViewController(page1)
page1.didMove(toParentViewController: self)
// Inject dependency.
page1.videoPlaybackManager = videoPlaybackManager
page2 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.favoritesViewController.rawValue) as! FavoritesViewController
page2.view.translatesAutoresizingMaskIntoConstraints = false
page2.delegate = self
scrollView.addSubview(page2.view)
addChildViewController(page2)
page2.didMove(toParentViewController: self)
page3 = storyboard.instantiateViewController(withIdentifier: StoryboardIdentifiers.settingsViewController.rawValue) as! SettingsViewController
page3.view.translatesAutoresizingMaskIntoConstraints = false
scrollView.addSubview(page3.view)
addChildViewController(page3)
page3.didMove(toParentViewController: self)
......
일반적으로 컨테이너 VC를 어떻게 초기화합니까? 그것은 didLaunchWithOptions'에 없습니까? – dmorrow
안녕하세요, 저는 예제가 완성 된 방법을 보여주는 코드를 추가했습니다. 감사합니다. – user7097242
사실 ContainerVC가 스토리 보드를 통해 초기화되고 있습니다. – user7097242