【MainViewController】
MainViewControllerクラス
ContainerViewがありそのContainerViewはPageViewとsegue(embed)で接続されている状態
【PageViewController】
PageViewクラス
【PageViewContents】
PageViewContentsクラス
ラベルが一つだけ存在する状態、ラベルはアウトレットで接続されている
そこで以下のソースがあるとします
swift
1import Foundation 2 3/* MainViewControllerのクラス */ 4class MainViewController: RootViewController{ 5 /* PageViewContentsに表示したいデータ(Array) */ 6 var pageViewData:Array<String> 7} 8 9/* PageViewのクラス*/ 10class PageView: UIPageViewController{ 11 override func viewDidLoad() { 12 super.viewDidLoad() 13 self.setViewControllers([getFirst()], direction: .Forward, animated: true, completion: nil) 14 self.dataSource = self 15 } 16 17 func getFirst() -> PageViewContents{ 18 return storyboard!.instantiateViewControllerWithIdentifier("PageViewContents") as! PageViewContents 19 } 20} 21 22extension PageView: UIPageViewDatasource{ 23 func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 24 return getFirst() 25 } 26 27 func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 28 return getFirst() 29 } 30} 31 32 /* PageViewに表示するViewControllerクラス */ 33class PageViewContents: UIViewController{ 34 @IBOutlet var labeltest :UILabel! 35} 36
質問内容
以上の設計でMainViewControllerで持っている配列をPageViewContentsに表示させたいと思い、
PageViewのgetFirst()メソッドの中にStoryBoardからインスタンス化したPageViewContentsのViewのアウトレット接続されているラベルの中身を書き換える処理を記述したのですが、アウトレット接続されているラベルにnilが帰ってきてしまいエラーとなってしまいます。
調べたところインスタンスのアウトレットで接続されている部品の中身はイニシャライズしなければならない、というのを見たのですが正しいでしょうか?
どうすればアウトレット接続されているラベルの中身を書き換えることができるのでしょうか?
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。