【決定版】UIPageViewControllerの使い方(Swift)
↑上のサイトを見ながら作業を進めていたのですが、
いくつかエラーが出たので原因と解決方法を教えていただきたいです。
サイト中の「UIPageViewControllerを編集しよう」の「2.最初の画面を設定」までは動作確認できています。
#環境
Xcode:バージョン8.2(8C38)
macOS Sierra:バージョン10.12.2
#コードとエラー内容
PageViewController.swift内のコードと3つのViewControllerの名前はすべて上記のサイトと同じです。
(サイトのコード中のreturn storyboard!.instantiateViewControllerWithIdentifier ...
の部分は書き直せというエラーが出たのでここではreturn storyboard!.instantiateViewController(withIdentifier:) ...
と修正しています。)
エラー箇所は全部で5箇所で、エラーが出た部分に// ↓ エラー
とコメントしています。
// PageViewController.swift import UIKit class PageViewController: UIPageViewController { override func viewDidLoad() { super.viewDidLoad() self.setViewControllers([getFirst()], direction: .forward, animated: true, completion: nil) self.dataSource = self } func getFirst() -> FirstViewController { return storyboard!.instantiateViewController(withIdentifier:)("FirstViewController") as! FirstViewController } func getSecond() -> SecondViewController { return storyboard!.instantiateViewController(withIdentifier:)("SecondViewController") as! SecondViewController } func getThird() -> ThirdViewController { return storyboard!.instantiateViewController(withIdentifier:)("ThirdViewController") as! ThirdViewController } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } } // ↓ エラー① extension PageViewController : UIPageViewControllerDataSource { func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { // ↓ エラー② if viewController.isKindOfClass(ThirdViewController) { // 3 -> 2 return getSecond() // ↓ エラー③ } else if viewController.isKindOfClass(SecondViewController) { // 2 -> 1 return getFirst() } else { // 1 -> end of the road return nil } } func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { // ↓ エラー④ if viewController.isKindOfClass(FirstViewController) { // 1 -> 2 return getSecond() // ↓ エラー⑤ } else if viewController.isKindOfClass(SecondViewController) { // 2 -> 3 return getThird() } else { // 3 -> end of the road return nil } } }
エラー内容は
①がType 'PageViewController' does not conform to protocol 'UIPageViewControllerDataSource'
②〜⑤がValue of type 'UIViewController' has no member 'isKindOfClass'
です。
#質問:エラーの解決方法は?
google翻訳で翻訳してみると、
エラー①は
「タイプ 'PageViewController'はプロトコル 'UIPageViewControllerDataSource'に準拠していません」
エラー②〜⑤は
「タイプ 'UIViewController'の値にメンバー 'isKindOfClass'がありません」
と言っていることがわかりました。
②〜⑤のValue of type 'UIViewController' has no member 'isKindOfClass'
は、
Swiftのコンパイルエラー寄せ集め←ここのサイトを参考にすると
「UIViewControllerの中にisKindOfClassが無い(?)」という意味かと考えたのですが、ではどうすれば解決するのかがわかりません。
①に関しても同じです。
解決策と原因が分かる方がいらっしゃれば、回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/15 17:34
2016/12/15 20:46
退会済みユーザー
2016/12/16 17:06