- ベストアンサー
スクロールの上にある画像をフリックで変える方法
- 画像を左右にスクロールさせる方法と画像を上下にフリックする方法を実装しています。
- UIViewControllerにスクロールのメソッドを書き、もう一つのUIScrollViewを親に持つPageViewに画像の拡大縮小と上下のフリックのメソッドを書いています。
- PageViewでの上下のフリックの操作によって、UIViewController上のスクロールに乗っている画像を変更したいのですが、方法が分かりません。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
> 今回、delegateを、sampleMethodメソッドの中のpageのところの下に書いたのですが(前回教えて頂いたのをヒントに)、delegateのサンプルで教えて頂いた例のようにdelegateをsampleMethodメソッドの外でつなげてなくても大丈夫でしょうか? No.6のお礼のソースは、sampleMethodメソッド内にdelegateを設定する処理がなくて、 外で設定しようとしていたのですね。元々のviewDidLoad内のPageView生成処理を そのままsampleMethod内に移したのだと思いこんでいて、気付いていませんでした。 No.7のお礼のソース通り、sampleMethodメソッド内にdelegateを設定するので 問題ありません。これが正しいです。 delegateの設定は、そのオブジェクトの初期化処理の1つと考えればよいです。 重要なのはオブジェクト生成後、極力すぐにdelegateを設定することです。 最初に示した逆引きObjective-Cサイトのサンプルは、Sampleクラスをalloc/init した直後にdelegateを設定していたと思います。 今回のPageViewは、sampleMethod内で新しいPageViewオブジェクトをalloc/init していますから、同様にその直後にdelegateを設定するのが正しいです。 ただ、delegateで呼び出されるメソッドの処理で注意しなければならないのは、 呼び出し元のオブジェクトに悪影響を与える処理をしないことです。 (呼び出し元に悪影響がある処理って、具体的に何なのかあまりはっきりしない 場合が多いので、これに気付くのは結構難しくて、実際に動かして問題に ぶつかってやっと気付くケースが多いです) 実は今回の質問を受けて気がついたのですが、今回のdelegateメソッドは PageViewのtouchesEndedの延長で呼び出されます。そして、delegateメソッド内で 呼び出し元のPageViewをremoveFromSuperviewで削除してしまいます。 つまり、タッチイベント処理中にそのビューが画面から削除されてしまいます。 これが実際に悪影響となる問題を引き起こさないか、私も似たようなものを 作って検証してみましたが、特に具体的な問題は見つけられませんでした。 (タッチイベント処理の延長にそのビューがなくなるのは、UIKitとしても 想定内の動作なのかもしれません。) でも、もし心配なら、ここはperformSelectorOnMainThreadを使って 一旦メインスレッドに処理を回して、タッチイベントが終了してから 改めてPageViewを削除する方法をとることもできます。 具体的には、sampleMethodの処理を [self performSelectorOnMainThread:@selector(updateImageSet) withObject:nil waitUntilDone:NO]; という一行だけにして、 もともとsampleMethodに書いてあった処理を updateImageSetという新しいメソッドに移せばいいです。
その他の回答 (7)
- Lchan0211b
- ベストアンサー率61% (573/930)
「画像を切り替える」というのは、元の画像(view)を一旦削除してから 新しいviewを追加するということです。 削除にはremoveFromSuperviewを使います。 ネットにいい例がなかったので、もうコーディングを書いてしまいますが、 ----------------------------------------------------------- // self.view内のviewを全て削除 for (ScrollView *scrollView in self.view.subviews) { for (PageView *page in scrollView.subviews) { // PageView削除 [page removeFromSuperview]; } // ScrollView削除 [scrollView removeFromSuperview]; } ----------------------------------------------------------- をsampleMethodの先頭に書けばself.view内のviewが一旦全て削除 されますので、その後、従来通りの方法でaddSubviewすればよいと 思います。 これにより、UIScrollviewの*scrollViewとPageViewの*pageを @interfaceで宣言する必要はなく、従来通りメソッド内の ローカル変数宣言でいいと思います。 あと、 > page=[[PageView alloc] initWithFrame:self.view.bounds]; > page.delegate = self; > [page test]; の3行も意味がわかりませんでした。 不要だと思います。
お礼
Lchan0211bさん、本当にいつもありがとうございます。 お陰さまで、教えて頂いたコードと、delegateをsampleMetodメソッドの中に書いたらできるようになりました。 ただ一点だけ、どうしても理解できないところがありまして、お伺いさせて頂けたらと思いますが、 今回、delegateを、sampleMethodメソッドの中のpageのところの下に書いたのですが(前回教えて頂いたのをヒントに)、delegateのサンプルで教えて頂いた例のようにdelegateをsampleMethodメソッドの外でつなげてなくても大丈夫でしょうか? もしかしたら、これも、ViewDIdLoadと同じく、うまくいっているようにみえて実は駄目なコードの書き方かと思いまして。。 何度も、素人な質問をして申し訳ございませんが、良かったらまたご指導頂けたら幸いです。 - (void)viewDidLoad { [self sampleMethod]; } - (void)sampleMethod { NSLog(@"sampleMethodが呼ばれた"); for (UIScrollView *scrollView in self.view.subviews) { for (PageView *page in scrollView.subviews) { [page removeFromSuperview]; } [scrollView removeFromSuperview]; } UIScrollView *scrollView = [[UIScrollView alloc] init]; scrollView.frame = self.view.bounds; scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height); scrollView.pagingEnabled = YES; [self.view addSubview:scrollView]; AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; NSLog(@"secondviewdeha%d",currentpage); for (int i=1;i<4;i++) { PageView *page = [[PageView alloc] initWithFrame:self.view.bounds]; //前回教えて頂いたのをヒントに、メソッドでもここのところにdelegateをもってきています。 page.delegate=self; [page setImage:[NSString stringWithFormat:@"%d.%d",currentpage,i]]; NSLog(@"secondviewde2ha%d",currentpage); page.frame = CGRectMake( self.view.frame.size.width * (i-1), 0, self.view.frame.size.width, self.view.frame.size.height ); [scrollView addSubview:page]; } }
- Lchan0211b
- ベストアンサー率61% (573/930)
> 今回のように、最初からViewController.mにある-(void)ViewDidLoadメソッドをデリゲードで使っても支障はないのでしょうか? まずいと思います。 基本的に、viewDidLoadはViewControllerが初めて画面に読み込まれる時に 一度だけ実行されるメソッドであり、その前提で作られるものです。 今回の質問の最初にviewDidLoadメソッドの内容が書かれていますので、 それを元に具体的な問題点を指摘をすると、 1.[super viewDidLoad];の部分 本来のロード契機でないタイミングで[super viewDidLoad]の呼び出しを すると、なにか悪影響があるかもしれません。 2.[self.view addSubview:scrollView];の部分 ベースのviewにscrollViewをaddSubviewしていますが、初回に作った scrollViewが削除されないまま、その上にaddSubviewすることになります。 つまり、今の状況は新しい画像に切り替えているのではなく、元の 画像を残したまま、その上に新しい画像を置いています。 何度もフリック操作すると、画像を切り替えているつもりが、画像をどんどん 上に重ねて行くだけになっていて、やがてメモリ不足になると思います。 やはり、画像切り替え用のメソッドを別に作って、それをdelegateで呼び出し すべきと思います。それができたら、viewDidLoad内で最初に画像を生成する 処理をその画像切り替えメソッドの呼び出しに替えてもよいと思います。
お礼
いつも本当に助けて頂きましてありがとうございます。 ご指摘頂きましたように、フリックしてからスクロールした際に、スクロールの端のほうから下の画面がかすかにみえてました。。できた嬉しさから見落としてました。 >画像切り替え用のメソッドを別に作って、それをdelegateで呼び出し すべきと思います。それができたら、viewDidLoad内で最初に画像を生成する 処理をその画像切り替えメソッドの呼び出しに替えてもよいと思います。 ご指導頂きましたことを旨に、 とりあえず、一回目の画面のときと、フリック時の画面のときに共通で使えるようにUiscrollviewの*scrollviewと、PageViewの*pageを宣言してから、 スクロールとその上に画像を乗せるメソッドを別に作り、viewdidLoadのところで、使うようにしたのですが、 一度目の画面はでるのですが、フリック時のデリゲートの書き方がまた間違っているのか、なかなか、画面の切り替えという動きになりません。(重ねるのはでてきます) いつも大変お時間をとっていただきまして本当に恐縮しますが、またご指導頂けましたら幸いです。 以下、コードです。 @interface ViewController () //前回まで、メソッドの中に書いていた二つをここで宣言しました。 { UIScrollView *scrollView; PageView *page; } - (void)viewDidLoad { [super viewDidLoad]; //ここで下に書いてあるsampleMethodメソッドを使いました。これは表示されました。 [self sampleMethod]; //この下の書き方を色々としてみたのですが、重ねるのはできても、切り替わるというデリゲートにはならない状態です。 page=[[PageView alloc] initWithFrame:self.view.bounds]; page.delegate = self; [page test]; } //以前はviewdidLoad の中に書いていたのをメソッドにしました。 - (void)sampleMethod { NSLog(@"sampleMethodが呼ばれた"); scrollView = [[UIScrollView alloc] init]; scrollView.frame = self.view.bounds; scrollView.contentSize = CGSizeMake(self.view.frame.size.width * 3, self.view.frame.size.height); scrollView.pagingEnabled = YES; [self.view addSubview:scrollView]; AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; NSLog(@"%d",currentpage); for (int i=1;i<4;i++) { page = [[PageView alloc] initWithFrame:self.view.bounds]; [page setImage:[NSString stringWithFormat:@"%d.%d",currentpage,i]]; page.frame = CGRectMake( self.view.frame.size.width * (i-1), 0, self.view.frame.size.width, self.view.frame.size.height ); [scrollView addSubview:page]; }} 重ね重ね、本当にいつもありがとうございます。
- Lchan0211b
- ベストアンサー率61% (573/930)
No.1です。 > [PageView sampleMethod]: unrecognized selector このメッセージから、やはりPageViewクラスのsampleMethodを 呼び出そうとして失敗していますよね。 delegateプロパティにちゃんとVCを設定していますか? (delegateプロパティを設定しているところと 参照しているところで何が入っているかデバッガで 確認してください) 特に気になるのは以下の2点です。 1.VCクラスのviewDidLoad内の PageView *page = [[PageView alloc] initWithFrame:self.view.bounds]; の直後(forループ内)に page.delegate = self; と書いて、delegateプロパティにちゃんとVCを設定していますか? 2.余計なところでdelegateプロパティを設定していませんか? PageViewクラスの全体構造について情報をもらってないので、 以下ほとんど推測ですが、おそらくPageViewクラスは UIScrollViewのサブクラスになっていて、画像の拡大縮小処理 のためにUIScrollViewのdelegateメソッドである viewForZoomingInScrollViewをPageViewクラスの中に書いていて、 それを呼び出すためにPageViewクラスのviewDidLoad内に self.delegate = self; とか書いているんじゃないかなと思います。 もしそうだっら、それを削除して、 viewForZoomingInScrollViewメソッドはVCに書いてください。 もしまだ解決できなくて次に質問することがあったら、 PageViewクラスの全体構造をきちんと教えてください。 特に ・PageViewクラスの基本クラスは何か?(@interface行の記載内容を教えてください) ・viewForZoomingInScrollViewはどこでどのように処理しているか? を教えてください。
お礼
Lchan0211bさん、本当に、本当にいつもありがとうございます(涙) お陰さまで、VCのメソッドをPVでデリゲードできるようになりました! ご指摘頂いた2点が、そのまま当てはまりました。 本当に感謝しております。 そこで、今回の質問時の最初に教えて頂いた >そのフリック検出をViewController(VC)にでも伝えて、VCから各PageViewに新しいイメージをsetImageするか あるいは新しいPageViewに入れ替えるかすればよいだけ に取り組んだのですが、 その際に、VCに定義してある-(void)ViewDidLoadメソッドをそのままPageViewのフリックのところでデリゲードして使い、 (その際に、VCとPVの共有で使えるようにAppDelegateで宣言したプロパティのvalueを使いフリック時に数字を変え、ページ数に当てはめる) 今回の目的でもある上下のフリック操作でVCのスクロールの上にのっている画像が変わるようになったのですが、 今回のように、最初からViewController.mにある-(void)ViewDidLoadメソッドをデリゲードで使っても支障はないのでしょうか? うまくいくようになったのですが、本当に大丈夫なのかと思いまして。。 素人すぎる質問で恐縮しますが、もし宜しければご指導頂けたら幸いです。 具体的には、フリックの中をこのようにしてみました。 if (distanceHorizontal > distanceVertical) { if (pointEnded.x > _pointBegan.x) { // message = @"右フリック"; } else { // message = @"左フリック"; } } else { if (pointEnded.y > _pointBegan.y){ AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; currentpage=currentpage+1; NSLog(@"pageviewdeha%d",currentpage); appdelegate.Value=currentpage; [self.delegate sampleMethod]; //予め、sampleMethodと同じく定義しておき、ここでViewControllerのViewdidLoadをデリゲードしてみました。 [self.delegate viewDidLoad]; } else { AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; currentpage=currentpage-1; NSLog(@"pageviewdeha%d",currentpage); appdelegate.Value=currentpage; [self.delegate sampleMethod]; [self.delegate viewDidLoad]; }
- Lchan0211b
- ベストアンサー率61% (573/930)
No.1です。 > これをPageView(PV)でのフリック操作のときのメソッドで行う場合は、PVにあるフリックの > メソッドのところで、デリゲード先のVC内に書いてあるメソッドを呼ぶようにするという > 考え方で宜しいのでしょうか? そうですよ。 No.1補足に書かれているソースなら NSLog(@"上フリックのpageviewでは%d",currentpage); や NSLog(@"下フリックのpageviewでは%d",currentpage); のところに、 [self.delegate sampleMethod]; と書けばフリック検出時にVCのsampleMethodを呼び出せるはずです。 それで呼び出せないんだったら、どういう動作になるのか (呼び出しが無視されているように見えるのか、 それとも呼び出し先がないというエラーになっているのか) コンソールにメッセージが出ているなら、そのメッセージも 含めて説明すれば、なにかアドバイスできるかもしれません。
お礼
いつもお時間を割いて頂きまして、本当にありがとうございます。 教えて頂きました [self.delegate sampleMethod]; をフリックメソッドのところに書きますと、build suceededと出てきまして、フリックをしたときにエラーとなって以下のようにでてきます。 [4641:a0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[PageView sampleMethod]: unrecognized selector sent to instance 0x8c078d0' *** First throw call stack: ( 0 CoreFoundation 0x017375e4 __exceptionPreprocess + 180 1 libobjc.A.dylib 0x014ba8b6 objc_exception_throw + 44 2 CoreFoundation 0x017d4903 -[NSObject(NSObject) doesNotRecognizeSelector:] + 275 3 CoreFoundation 0x0172790b ___forwarding___ + 1019 4 CoreFoundation 0x017274ee _CF_forwarding_prep_0 + 14 5 test94.9.5.1 0x00004096 -[PageView touchesEnded:withEvent:] + 790 6 UIKit 0x0026c0cd -[UIWindow _sendTouchesForEvent:] + 852 7 UIKit 0x0026cd34 -[UIWindow sendEvent:] + 1232 8 UIKit 0x00240a36 -[UIApplication sendEvent:] + 242 9 UIKit 0x0022ad9f _UIApplicationHandleEventQueue + 11421 10 CoreFoundation 0x016c08af __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 11 CoreFoundation 0x016c023b __CFRunLoopDoSources0 + 235 12 CoreFoundation 0x016dd30e __CFRunLoopRun + 910 13 CoreFoundation 0x016dcb33 CFRunLoopRunSpecific + 467 14 CoreFoundation 0x016dc94b CFRunLoopRunInMode + 123 15 GraphicsServices 0x036889d7 GSEventRunModal + 192 16 GraphicsServices 0x036887fe GSEventRun + 104 17 UIKit 0x0022d94b UIApplicationMain + 1225 18 test94.9.5.1 0x0000481d main + 141 19 libdyld.dylib 0x01d73725 start + 0 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb) 一応、ViewController(VC)に書いてあるsampleMethodを、PageView(PV)にも書いたらエラーなく動きましたが、NSLogの内容は、VCでの内容を引き継いでいるわけではなく、PV内のsampleMethodに別に書いた内容がでてきました。 いつもお手数かけて大変恐縮しています。また、ご指導頂けたら幸いです。
- Lchan0211b
- ベストアンサー率61% (573/930)
追伸です。 もし、PageViewがUIScrollViewのサブクラスとして 実装されているなら、UIScrollViewで既にdelegateが 定義されていますので、そのdelegateを引き継いで 拡張する形で実装する必要があります。 具体的には、delegateの定義を @protocol PageViewDelegate <UIScrollViewDelegate> のようにすればよいです。
お礼
いつも本当にありがとうございます。 早速、教えて頂いたdelegateと、protocolの書き方、逆引きObjective-Cを参考にさせて頂いて、SampleClassをPVに書いてViewControllerで、NSLogに"sampleMethodが呼ばれた"をだせるようになりました。 これをPageView(PV)でのフリック操作のときのメソッドで行う場合は、PVにあるフリックのメソッドのところで、デリゲード先のVC内に書いてあるメソッドを呼ぶようにするという考え方で宜しいのでしょうか? まだ、VC内にフリック時の情報が伝えられずでして。。 お手数かけていつも申し訳ありませんが、また教えて頂けたら幸いです。
- Lchan0211b
- ベストアンサー率61% (573/930)
No.1です。 > 今回ご指摘して頂いてる、フリック検出をViewContollerに伝えるところがわからなくています。 あぁ、なるほど。 ViewControllerに伝えたいのに、どうやってViewControllerの居場所を得たらいいのか わからないということですね。 やり方はいろいろありますが、delegateを実装するのが一般的だと思います。 要するに通知先となるViewControllerをあらかじめPageViewに登録しておけば いいということなのですが、あまり深く考えずにそれをやると循環参照といった罠に 陥りやすいので、delegateというお作法に従って実装すればうまくいくということです。 http://www.objectivec-iphone.com/introduction/delegate/delegate.html が参考になると思います。 この説明のSampleクラスがPageViewクラスに相当していると思えばいいです。
- Lchan0211b
- ベストアンサー率61% (573/930)
> このPVの中で行う上下のフリックの操作によって、VCにあるスクロールの上に乗っている画像を変えたいのですが、色々と試したのですがその方法が一向にわかりません。 http://okwave.jp/qa/q8369983.html の質問の続きなのだと思いますが、 前回の質問で、上下フリックを検出して NSLogを出力するところまではできたのだろう と思います。 後は、そのフリック検出をViewController(VC)にでも伝えて、 VCから各PageViewに新しいイメージをsetImageするか あるいは新しいPageViewに入れ替えるかすればよいだけだと 思うのですが、何がわからないんでしょうか? 新しいイメージをsetImageしたはずなのに画像が変わらなくて 原因がわからず困っているのだったら、イメージを更新する処理の ソースを開示してアドバイスを求めた方がよいと思います。
お礼
Lchan0211bさん、本当にいつもありがとうございます。 お陰さまで、PageViewにおいての上下フリックのNSLogの出力はできるようになりました。 今回ご指摘して頂いてる、フリック検出をViewContollerに伝えるところがわからなくています。 PageView(PV)のスーソコードのsetImageと上下フリックに関しては以下のように書いています。 いつも助けて頂きまして、本当に感謝しています。 またご教授頂けたら幸いです。 -(void)setImage:(NSString *)image{ NSString *path=[[NSBundle mainBundle] pathForResource:image ofType:@"png"]; imageView.image=[UIImage imageWithContentsOfFile:path]; [self adjustScrollView:NO]; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch*touch=[touches anyObject]; _timestampBegan=event.timestamp; _pointBegan=[touch locationInView:self]; } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch*touch=[touches anyObject]; if ([touch tapCount]>1) { [self adjustScrollView:YES]; } static const NSTimeInterval kFlickJudgeTimeInterval = 0.3; static const NSInteger kFlickMinimumDistance = 10; UITouch *touchEnded = [touches anyObject]; CGPoint pointEnded = [touchEnded locationInView:self]; NSInteger distanceHorizontal = ABS(pointEnded.x - _pointBegan.x); NSInteger distanceVertical = ABS(pointEnded.y - _pointBegan.y); if (kFlickMinimumDistance > distanceHorizontal && kFlickMinimumDistance > distanceVertical) { return; } NSTimeInterval timeBeganToEnded = event.timestamp - _timestampBegan; if (kFlickJudgeTimeInterval > timeBeganToEnded) { NSString*message; //上下にフリックしたとき if (distanceHorizontal > distanceVertical) { if (pointEnded.y > _pointBegan.y) { //ここで、上にフリックでAppDelegateで作ったプロパティのValueの値を+1させて変更させることによってVCでの画像の変更を(2.1.png⇨3.1.png)のように変更させたいと思っています。 AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; currentpage=currentpage+1; NSLog(@"上フリックのpageviewでは%d",currentpage); } else { AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; appdelegate.Value=currentpage-1; NSLog(@"下フリックのpageviewでは%d",currentpage);
補足
本当にいつもありがとうございます。 お陰さまで、PageViewにおいての上下フリックのNSLogの出力はできるようになりました。 今回ご指摘して頂いてる、フリック検出をViewContollerに伝えるところがわからなくています。 PageView(PV)のスーソコードのsetImageと上下フリックに関しては以下のように書いています。 いつも助けて頂きまして、本当に感謝しています。 またご教授頂けたら幸いです。 -(void)setImage:(NSString *)image{ NSString *path=[[NSBundle mainBundle] pathForResource:image ofType:@"png"]; imageView.image=[UIImage imageWithContentsOfFile:path]; [self adjustScrollView:NO]; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch*touch=[touches anyObject]; _timestampBegan=event.timestamp; _pointBegan=[touch locationInView:self]; } -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{ UITouch*touch=[touches anyObject]; if ([touch tapCount]>1) { [self adjustScrollView:YES]; } static const NSTimeInterval kFlickJudgeTimeInterval = 0.3; static const NSInteger kFlickMinimumDistance = 10; UITouch *touchEnded = [touches anyObject]; CGPoint pointEnded = [touchEnded locationInView:self]; NSInteger distanceHorizontal = ABS(pointEnded.x - _pointBegan.x); NSInteger distanceVertical = ABS(pointEnded.y - _pointBegan.y); if (kFlickMinimumDistance > distanceHorizontal && kFlickMinimumDistance > distanceVertical) { return; } NSTimeInterval timeBeganToEnded = event.timestamp - _timestampBegan; if (kFlickJudgeTimeInterval > timeBeganToEnded) { NSString*message; //上下にフリックしたとき if (distanceHorizontal > distanceVertical) { if (pointEnded.y > _pointBegan.y) { //ここで、上にフリックでAppDelegateで作ったプロパティのValueの値を+1させて変更させることによってVCでの画像の変更を(2.1.png⇨3.1.png)のように変更させたいと思っています。 AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; currentpage=currentpage+1; NSLog(@"上フリックのpageviewでは%d",currentpage); } else { AppDelegate *appdelegate=(AppDelegate*)[[UIApplication sharedApplication]delegate]; currentpage=appdelegate.Value; appdelegate.Value=currentpage-1; NSLog(@"下フリックのpageviewでは%d",currentpage);
お礼
Lchan0211bさん、何度もご丁寧に教えて頂きまして、本当にありがとうございます!(涙) お陰さまで、delegateの使い方も少しずつわかるようになってきました。 教えて頂きましたperformSelectorOnMailメソッドのコードもいれて、サクサク動くようになりました。 お時間をとって頂き、検証までして頂き、本当に一言では言い尽くせないほど感謝しております。 今回、独学でプログラミングをやりはじめて、全くわからないなか孤独な毎日でしたが、 Lchan0211bさんのお陰で、最初の質問時の画面遷移からどれだけ助けて頂いたかと思うくらいです。 もっと勉強して精進するように致します。 本当、重ね重ねありがとうございました。