私は3つのビューコントローラとコンテナビューコントローラを持っています。これら3つのビューコントローラをコンテナ内の子ビューコントローラとして追加します。私は、アプリケーションを起動すると、私はviewDidloadとviewDidAppearで実行されるすべてのビューコントローラでprintステートメントを持っています。viewDidloadとviewDidAppearが呼び出されていませんか?
問題は次のとおりです。これらのビューを「スクロール」して再び「表示」すると、printDidAppearやviewDidLoad内でprintステートメントが実行されずコードも実行されません。なぜこうなった?
ここで私のビューコントローラをインスタンス化するコードです。助けてくれてありがとう!ライフサイクルを通じてコントローラサイクルにそれらのビューをトリガーする何
override func viewDidLoad() {
super.viewDidLoad()
scrollView.delegate = self
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)
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)
}
詳細な回答をいただきありがとうございます。だから、私はスクロールビュー内にある3つのビューコントローラにスクロールするように私の理解から、viewDidAppearなどがロードされてから再度トリガされないだろうか?もう一度スクロールしても? (これは本当に新しい!)また、私は "彼らのライフサイクルを循環させるために、それらのView Controllerが何を引き起こすのだろうか?"その特定のビューをスクロールすると、そのビューが実行されます。しかし、私はないと思いますか? – user7097242
前回の質問でこれを聞いたことがあります.3つのVCの理由は何ですか? UIViewとUIViewControllerを混同しないでください。 (これは初心者にとってはよくある間違いですが、私はあなたに関してこのことを言っています)。親VCはスクロールビュー**とその中のすべてのビューを制御します。私の古いバージョンのアプリケーションでは、UIPageViewと、2つのGLKViews(UIViewsに似ています)で動作するUIScrollViewがありました。そのすべて(画像のロード、スクロールウィンドウ、ページコントロールの変更)は、単一のUIViewControllerで処理されました。私はこれに追加します.... – dfd
私はそのコードを共有したいので、フレームワーク内の関数に画像処理をオフロードしました。オートレイアウトを別のファイルにオフロードしました。スクロールビューとページビューデリゲートの処理をUIViewController拡張に移動しました。それ以外の場合は、大量のビューコントローラが必要になります。私はまた、いくつかの拡張も行った。しかし、これらの2つのコメントの要点は、 - 自分のコントローラを持つためにスクロールビューにビューを持たせるために、**具体的な必要性**を持っていなければ(そして、あるかもしれない)、あなたは意図しない副作用。 – dfd