segmentedControlを使って画面移行をしたいと考えています。
ネットの情報を拾ってきて実際にやってみたもののエラーとなっています。
その解決方法が分からないのでどなたか教えてくださいm(_ _)m
やりたい手段としては、viewcontrollerにnavigationcontrollerを設置し、そこにsegmentedcontrollerを設置して画面の移行がしたいです。
このサイトを基に構築していきました。
https://qiita.com/okyawa/items/d7d32517a01bbf8619ad
自身が作ったものでは、ベースとなるViewControllerとページ移行したいSecondViewControllerとThirdViewControllerを作成しています。それに合わせてサイトの引用から自身で変更したつもりでしたがエラーが出て行き詰まっている現状です。
swift
1 2import UIKit 3 4class ViewController: UIViewController { 5 @IBOutlet weak var segmentedControl: UISegmentedControl! 6 7 8 private lazy var sample1ViewController: SecondViewController = { 9 let storyborad = UIStoryboard(name: "Main", bundle: Bundle.main) 10 var viewController = storyborad.instantiateViewController(withIdentifier: "SecondViewController") as! ViewController 11 add(asChildViewController: viewController) 12 ????return viewController 13 }() 14 15 private lazy var sample2ViewController: ThirdViewController = { 16 let storyborad = UIStoryboard(name: "Main", bundle: Bundle.main) 17 var viewController = storyborad.instantiateViewController(withIdentifier: "ThirdViewController") as! ViewController 18 add(asChildViewController: viewController) 19 ????return viewController 20 }() 21 22 23 override func viewDidLoad() { 24 super.viewDidLoad() 25 // Do any additional setup after loading the view. 26 27 } 28 29 30 31 private func setupView() { 32 updateView() 33 } 34 35 private func updateView() { 36 if segmentedControl.selectedSegmentIndex == 0 { 37 remove(asChildViewController: sample2ViewController) 38 add(asChildViewController: sample1ViewController) 39 } else { 40 remove(asChildViewController: sample1ViewController) 41 add(asChildViewController: sample2ViewController) 42 } 43 } 44 45 // MARK: - Action 46 47 @IBAction func tapSegmentedControl(_ sender: UISegmentedControl) { 48 updateView() 49 } 50 51 // MARK: - Child View Controller Operation Methods 52 53 private func add(asChildViewController viewController: UIViewController) { 54 // 子ViewControllerを追加 55 addChild(viewController) 56 // Subviewとして子ViewControllerのViewを追加 57 view.addSubview(viewController.view) 58 // 子Viewの設定 59 viewController.view.frame = view.bounds 60 viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight] 61 // 子View Controllerへの通知 62 viewController.didMove(toParent: self) 63 } 64 65 private func remove(asChildViewController viewController: UIViewController) { 66 // 子View Controllerへの通知 67 viewController.willMove(toParent: nil) 68 // 子ViewをSuperviewから削除 69 viewController.view.removeFromSuperview() 70 // 子View Controllerへの通知 71 viewController.removeFromParent() 72 } 73 74} 75 76
????2カ所がエラー箇所です。
Cannot convert return expression of type 'ViewController' to return type 'SecondViewController'
と
Cannot convert return expression of type 'ViewController' to return type 'ThirdViewController'
と出ています。
ググって調べたりしたのですがよくわかりません,,,
どなたか解決方法を教えてください。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/19 10:37