質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

1014閲覧

PageMenuライブラリのデリゲートメソッドについて

KaneChan

総合スコア15

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/08/20 22:02

編集2017/08/21 10:36

xcode 8.3.3
swift 3.1

現在「PageMenu」というライブラリを使っています。(CocoaPods経由)
*github(https://github.com/PageMenu/PageMenu)

その中に、
'func willMoveToPage(controller: UIViewController, index: Int){}'

'func didMoveToPage(controller: UIViewController, index: Int){}'

というデリゲートメソッドがあるのですが、このメソッドを記述しても何も呼ばれません。
(このメソッドはページの切り替えを行なった際呼ばれるメソッドだと思っています。)

これは一体何故でしょうか?

ちなみに、

'CAPSPageMenuDelegate'
'pageMenu!.delegate = self'

の記述はしております。

ご回答よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

'pageMenu?.delegate = self'

を、

'pageMenu = CAPSPageMenu(viewControllers: , frame: , pageMenuOptions: )'

よりも後に記述する。

*インスタンス生成より後にデリゲートを行う。

投稿2017/08/24 01:37

編集2017/08/24 01:50
KaneChan

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

アンダーバー抜けてるとか?

swift

1func willMoveToPage(_ controller: UIViewController, index: Int) { 2 /*処理*/ 3}

投稿2017/08/21 04:39

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KaneChan

2017/08/21 10:38

ご回答、修正のご指摘ありがとうございます。 アンダーバーを追記してもこのメソッドは呼ばれませんでした。 考えられる原因としては何かあるでしょうか?
fuzzball

2017/08/21 10:43

呼ばれていないのは、どうやって確認したのでしょうか?
KaneChan

2017/08/21 11:03

お返事ありがとうございます。 メソッドが呼ばれているかどうかの確認としてメソッド内に 'print("メソッドが呼ばれました。")' を書きましたが、ページ移動をしてもコンソールに出力されません。
fuzzball

2017/08/22 01:11

pageMenu!.delegate = self これはインスタンス生成よりあとに書いてますか?
KaneChan

2017/08/23 14:21

お返事遅れて申し訳ありません。 pageMenuのインスタンスはviewDidLoad()の前に、デリゲートはviewDidLoad()の中に記述しております。
fuzzball

2017/08/24 00:20

あなたの実際のコードを書いて下さい。 インスタンス生成、delegate設定、willMoveToPage、didMoveToPageなど。後者の2つは関数の中身は必要ありません。
KaneChan

2017/08/24 01:35

何度もお手数かけて申し訳ありません。 先ほど、viewDidLoad内の'pageMenu?.delegate = self'を一番後に記述(pageMenu = CAPSPageMenu(viewControllers: , frame: ), pageMenuOptions: )よりも後)したところ、無事デリゲートメソッドが呼ばれました。 理由はわかりませんが・・・ なんどもお助けしてくださり誠にありがとうございます。
fuzzball

2017/08/24 01:45

「これはインスタンス生成よりあとに書いてますか?」という質問の「インスタンス生成」とは、 pageMenu = CAPSPageMenu(viewControllers: , frame: ), pageMenuOptions: ) のことです。 「viewDidLoad()の前に」というのは、 var pageMenu : CAPSPageMenu? のことだったんでしょうか?(これはただの宣言です) pageMenuがnilの(インスタンスが生成されていない)状態でdelegateを設定しようとしても設定されるはずはありません。「理由はわかりませんが・・・」というのはちょっとマズイですよ。
KaneChan

2017/08/24 01:49

よくよく考えればそうでした。まだまだ勉強不足です・・・ fuzzballさんの仰るっ通りです。 本当にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問