2011-10-15 55 views
-1

我试图做一个“指令”窗口用的PageControl包含一些UIViewControllers一个UIScrollView中:的UIView滚动到的UIScrollView与的PageControl

- (void)loadScrollViewWithPage:(NSInteger)page { 
    if (page < 0 || page >= kNumberOfPages) return; 

    switch (page) { 
     case 0: 
      [[WelcomeViewController alloc] initWithNibName:@"WelcomeViewController" bundle:nil]; 
      break; 
     case 1:    
      [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
      break; 
     case 2: 
      [[FirstTabViewController alloc] initWithNibName:@"FirstTabViewController" bundle:nil]; 
      break; 
     case 3: 
      [[SecondTabViewController alloc] initWithNibName:@"SecondTabViewController" bundle:nil]; 
      break; 

     case 4: 
      [[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil]; 
      break; 
     default: 
      [[WelcomeViewController alloc] initWithNibName:@"WelcomeViewController" bundle:nil]; 
      break; 

    } 

} 

我不能让它工作。

滚动工作,但我无法显示任何我制作的UIViewController!

我该如何让它工作?

回答

0

听起来像你对快速修复更感兴趣,而不是做对了。好的。以下是你如何做到的。

- (void)loadScrollViewWithPage:(NSInteger)page { 
    if (page < 0 || page >= kNumberOfPages) return; 

    UIViewController * newController = NULL; 

    switch (page) { 
     case 0: 
      newController = (UIViewController *)[[WelcomeViewController alloc] initWithNibName:@"WelcomeViewController" bundle:nil]; 
      break; 
     case 1:    
      newController = (UIViewController *)[[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]; 
      break; 
     case 2: 
      newController = (UIViewController *)[[FirstTabViewController alloc] initWithNibName:@"FirstTabViewController" bundle:nil]; 
      break; 
     case 3: 
      newController = (UIViewController *)[[SecondTabViewController alloc] initWithNibName:@"SecondTabViewController" bundle:nil]; 
      break; 
     case 4: 
      newController = (UIViewController *)[[ThirdViewController alloc] initWithNibName:@"ThirdViewController" bundle:nil]; 
      break; 
     default: 
      newController = (UIViewController *)[[WelcomeViewController alloc] initWithNibName:@"WelcomeViewController" bundle:nil]; 
      break; 
    } 

    if(newController) 
    { 
     // this method is inside a UIScrollView, right? 
     [self.contentView addSubview: newController.view]; 
    } 

    // at this point, newController has been alloc'd and retained. You should either release it next time you enter 
    // into loadScrollViewWithPage (i.e. declare newController as an object in your .h file) or you should 
    // add "autorelease" after all of those initWithNibName calls up there 
} 
+0

试过这样。现在的问题是它加载了视图,但是它在每次滚动时将它们全部加载到第一页(第0页)!我的意思是,如果我进入第一页(0),并且滚动到下一页,我什么都看不到。但是如果我回到第一页,我可以看到第一个控制器! – Phillip

+0

我认为这是一个好主意,阅读iOS视图控制器编程指南:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40007457-CH1-SW1 – jcm

0

尝试使用UIPageViewController并添加许多不同的视图控制器(及其滚动视图)。

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/UIPageViewControllerClassReference.html

附: UIPageViewController是iOS 5和更新的版本。

+0

我也想过使用它,谢谢。但我也想知道我该如何解决这个问题! – Phillip

+1

@Phillip你实际上并没有放任何代码来显示视图。 – jcm

+0

@jcm我该如何向他们展示?我应该声明一个tmpController吗? – Phillip

相关问题