2016-06-09 17 views
0

Ich versuche, drei UIViewControllers in einem UIScrollView hinzuzufügen. Wenn ich nur zwei habe, funktioniert es perfekt. Wenn ich den dritten Code hinzufüge, erscheint ein Fehler und die App stürzt ab. Kann mir jemand helfen? Hier ist mein Code:UIScrollView mit ViewControllern

Zwei Viewcontrollers (funktioniert perfekt):

- (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;} 

Drei Viewcontrollers (funktioniert nicht):

- (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 Wenn Sie das Bild nicht sehen können, der Fehler ist: "Thread1: EXC_BAD_ACCESS"

+0

prüfen IBOutlet Verbindung http://stackoverflow.com/questions/34581479/cannot-instantiate-uiview-from-nib-warning- can-not-load-any-objective-c-cla – kb920

+0

Werden Sie Xib verwenden? –

+0

Ja, ich benutze Xib-Dateien @SurajSukale – user1935016

Antwort

0

Scheint, Sie haben Stapelüberlauf wegen Rekursion. Überprüfen Sie, ob Ihre untergeordneten Ansichtscontroller (AViewController) versuchen, auf ViewController von viewDidLoad zuzugreifen.

+0

Ich bin neu im Programmieren, es tut mir leid, aber ich habe nicht verstanden, was ich hier machen soll. Danke für Ihre Hilfe! Kannst du ein bisschen genauer sein? Oder führe mich ein bisschen mehr, was ich tun muss, um das zu beheben? Vielen Dank! – user1935016

+0

Sie sollten von AViewController aus nach einem Aufruf Ihrer ViewController-Klasse suchen. – srvv

0

Ich bin nicht sicher, ob ich Ihre Frage richtig verstanden habe, Versuchen Sie, diese

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;