質問: self } func getFirst() -> PageViewContents{ return storyboard!.instantiateViewControllerWithIdentifier("PageViewContents") as! PageViewContents } } extension PageView: UIPageViewDatasource{ func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { return getFirst() } func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { return getFirst() } } /* PageViewに表示するViewControllerクラス */ class PageViewContents: UIViewController{ @IBOutlet var labeltest :UILabel! } ``` **質問内容** 以上の設計でMainViewControllerで持っている配列をPageViewContentsに表示させたいと思い、 PageViewのgetFirst()メソッドの中にStoryBoardからインスタンス化したPageViewContentsのViewのアウトレット接続されているラベルの中身を書き換える処理を記述したのですが、アウトレット接続されているラベルにnilが帰ってきてしまいエラーとなってしまいます。 調べたところインスタンスのアウトレットで接続されている部品の中身はイニシャライズしなければならない、というのを見たのですが正しいでしょうか? どうすればアウトレット接続されているラベルの中身を書き換えることができるのでしょうか?
回答: ``` class PageViewContents: UIViewController{ @IBOutlet var labeltest :UILabel! override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) labeltest.text = "test" } } ``` viewWillAppearのタイミングなら多分labeltestはnilになってないんじゃないかなと思います。なので処理を書くならここかと。 自分も今回初めて見ましたが一度Xcode->File->New->ProjectからPage-Based Appのテンプレート見てみると知見があるかもです。