「firstVC」と「secondVC」の2つのViewControllerがあります。2つのviewControllesを分離したまま、水平方向にページ分割されたScrollviewを作成したいので、新しいViewController "HomePage"を作成します。ここで、scrollviewを作成し、fisrtVCとsecondVCを追加します。
-(void)viewDidLoad {
self.firstVC = [[firstVC alloc] initWithNibName:@"firstVC" bundle:nil];
self.secondVC = [[secondVC alloc] initWithNibName:@"secondVC" bundle:nil];
//setup frame
CGRect frame = self.scrollView.frame;
frame.origin.y = 0;
self.firstVC.view.frame = frame; //this is useless, I know... it's just for understand what I'm doing
frame.origin.x = 320;
self.secondVC.view.frame = frame;
//add the VC to the scrollView
[self.scrollview addSubview:self.firstVC.view];
[self.scrollview addSubview:self.secondVC.view];
//setup the scrollView
self.scrollView.contentSize = CGSizeMake(640 , frame.size.height);
self.scrollView.pagingEnabled = YES;
self.scrollView.showsHorizontalScrollIndicator = YES;
self.scrollView.userInteractionEnabled = YES;
self.scrollView.exclusiveTouch = YES;
self.scrollView.canCancelContentTouches = YES;
self.scrollView.delaysContentTouches = YES;
}
HomePageはUINavigationController内にあります。FirstVCとSecondVCには、より多くのカスタム(画像付き)UIButtonがあります。各ボタンは、nagivationControllerの新しいViewControllerを押す必要があります。これを行うために、FirstVCとSecondVCはHomePageへの弱参照を持っているため、呼び出すことができます。
[self.homePage.navigationController pushViewController:abc animated:YES];
すべてが機能しますが、2つの問題があります。
1)ボタンがIBActionに接続されているが、メソッドが空の場合、ボタンを押すと、画像が強調表示されます。メソッドが空でない場合(もちろん、何かをしなければならないためです!)、ボタンはすぐにメソッドを呼び出すので、ハイライトはありません!このメソッドは、ユーザーがボタンから指を離したときではなく(機能するはずです)、画面に触れた瞬間に呼び出されるようです。この問題は、2番目の問題に関連していると思います。
2)このため、scrollViewを(左から右に、またはその逆に)スクロールすることは非常に困難です。これは、ボタンに接続されたメソッドを呼び出すことが多いためです...
私が欲しいのは、モバイル版のAppStoreのようなものです。たとえば、「トップ購入」では、アイコンを押してからビューをスクロールできます。やろうとするとすぐにボタンが押されます!