let firstVC = ProductViewController()
という記載ではストーリーボードで定義したボタンなどの配置まで紐付けることができないので、
let firstVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Product")
というようにStoryBoardをインスタンス化させることで対応しました。
【参考にしたURL】
StoryBoardのViewControllerをインスタンス化する
困っている事
let firstVC = ProductViewController()
の方法ではProductViewController
のプロパティitemInfo
に値を代入できるのですが、
ストーリーボードをインスタンス化した場合ですとValue of type 'UIViewController' has no member 'itemInfo'
というエラーが出てプロパティitemInfo
に値を代入でません。
ストーリーボードをインスタンス化した場合はどのようにしてプロパティに値を代入したら良いでしょうか?よろしくお願いします。
コード
swift
1import UIKit 2import XLPagerTabStrip 3 4class MainViewController: ButtonBarPagerTabStripViewController { 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 } 8 9 override func viewControllers(for pagerTabStripController: PagerTabStripViewController) -> [UIViewController] { 10 11 let firstVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Product") 12 13 // Storyboardからだとエラー 14 // Value of type 'UIViewController' has no member 'itemInfo' 15 firstVC.itemInfo = "アイテム1" 16 17 18 let secondVC = ProductViewController() 19 // クラスからだと成功 20 secondVC.itemInfo = "アイテム2" 21 22 let childViewControllers: [UIViewController] = [firstVC, secondVC] 23 return childViewControllers 24 } 25} 26 27 28class ProductViewController: UIViewController, IndicatorInfoProvider { 29 30 //ここがボタンのタイトルに利用されます 31 var itemInfo: IndicatorInfo = "アイテム名" 32 33 override func viewDidLoad() { 34 super.viewDidLoad() 35 } 36 37 func indicatorInfo(for pagerTabStripController: PagerTabStripViewController) -> IndicatorInfo { 38 return itemInfo 39 } 40} 41
ストーリーボード
追記
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/06 03:10
2019/05/20 11:11
2019/05/21 05:50
2019/05/21 06:04 編集
2019/05/21 06:43
2019/05/21 06:48
2019/05/21 07:33