2016-06-09 3 views
0

UIScrollView에 세 개의 UIViewController를 추가하려고합니다. 내가 2 개 밖에 없다면, 완벽하게 작동합니다. 세 번째 앱을 추가하면 오류가 표시되고 앱이 다운됩니다. 누구든지 나를 도울 수 있습니까?ViewControllers가있는 UIScrollView

- (void)viewDidLoad{ 
[super viewDidLoad]; 



BViewController *bViewController = [[BViewController alloc]init]; 
CViewController *cViewController = [[CViewController alloc]init]; 


CGRect frame = cViewController.view.frame; 
frame.origin.x = 320; 
cViewController.view.frame = frame; 



[self addChildViewController:bViewController]; 
[self addChildViewController:cViewController]; 


[self.scrollView addSubview:bViewController.view]; 
[self.scrollView addSubview:cViewController.view]; 


[bViewController didMoveToParentViewController:self]; 
[cViewController didMoveToParentViewController:self]; 


self.scrollView.contentSize = CGSizeMake(320 * 2, self.view.frame.size.height); 
self.scrollView.pagingEnabled = YES;} 

세 ViewControllers이 (작동하지 않습니다) :

두 ViewControllers (완벽하게 작동) : 여기 내 코드는

- (void)viewDidLoad{ 
[super viewDidLoad]; 



AViewController *aViewController = [[AViewController alloc]init]; 
BViewController *bViewController = [[BViewController alloc]init]; 
CViewController *cViewController = [[CViewController alloc]init]; 


CGRect frame = cViewController.view.frame; 
frame.origin.x = 320; 
cViewController.view.frame = frame; 

CGRect frametwo = aViewController.view.frame; 
frametwo.origin.x = 320 * 2; 
aViewController.view.frame = frametwo; 



[self addChildViewController:aViewController]; 
[self addChildViewController:bViewController]; 
[self addChildViewController:cViewController]; 


[self.scrollView addSubview:aViewController.view]; 
[self.scrollView addSubview:bViewController.view]; 
[self.scrollView addSubview:cViewController.view]; 

[aViewController didMoveToParentViewController:self]; 
[bViewController didMoveToParentViewController:self]; 
[cViewController didMoveToParentViewController:self]; 



self.scrollView.contentSize = CGSizeMake(320 * 3, self.view.frame.size.height); 
self.scrollView.pagingEnabled = YES;} 

ERROR : Here is an image of the error I get 이미지를 볼 수없는 경우, 오류 : "Thread1 : EXC_BAD_ACCESS"

+0

확인 함께 IBOutlet 연결 http://stackoverflow.com/questions/34581479/cannot-instantiate-uiview-from-nib-warning- 시도 로드 할 수없는 어떤 목적의 c-cla – kb920

+0

xib를 사용할 예정입니까? –

+0

네, xib 파일 @SurajSukale – user1935016

답변

0

재귀 때문에 스택 오버플로가있는 것 같습니다. 자녀 뷰 컨트롤러 (AViewController)가 ViewControllerviewDidLoad에서 액세스하려고하는지 확인하십시오.

+0

프로그래밍에 익숙하지 않아서 미안하지만 여기서 내가 원하는 것을 이해하지 못했습니다. 도와 줘서 고마워! 조금 더 구체적 일 수 있습니까? 아니면 이것을 해결하기 위해 내가해야 할 일을 좀 더 안내해 주시겠습니까? 고마워요! – user1935016

+0

AViewController에서 ViewController 클래스에 대한 호출을 찾아야합니다. – srvv

0

내가 제대로 질문을 이해 여부를 확실하지 않다,이

AViewController *aViewController = [AViewController new]; 
BViewController *bViewController = [BViewController new]; 
CViewController *cViewController = [CViewController new]; 

CGRect aFrame = aViewController.view.frame; 
CGRect bFrame = bViewController.view.frame; 
CGRect cFrame = cViewController.view.frame; 

//Setting the frame 
aViewController.view.frame = CGRectMake(self.scrollView.frame.origin.x, self.scrollView.frame.origin.y, aFrame.size.width, aFrame.size.height); 

bViewController.view.frame = CGRectMake(self.scrollView.frame.origin.x+aFrame.size.width, self.scrollView.frame.origin.y, bFrame.size.width, bFrame.size.height); 

cViewController.view.frame = CGRectMake(bFrame.size.width+bFrame.size.width, self.scrollView.frame.origin.y, cFrame.size.width, cFrame.size.height); 

aViewController.view.backgroundColor = [UIColor greenColor]; 
bViewController.view.backgroundColor = [UIColor yellowColor]; 
cViewController.view.backgroundColor = [UIColor purpleColor]; 

[self.scrollView addSubview:aViewController.view]; 
[self.scrollView addSubview:bViewController.view]; 
[self.scrollView addSubview:cViewController.view]; 

self.scrollView.contentSize = CGSizeMake(aFrame.size.width+ bFrame.size.width+ cFrame.size.width, self.view.frame.size.height); 
self.scrollView.pagingEnabled = YES;