2013-02-17 140 views
0

所以我按段工具在其添加的UIView与UIScrollView的另一种观点认为:滚动型不会滚动

UIView.h

@interface gettingELORolesViewController : UIViewController{ 
    UIViewController *currentController; 
    NSMutableArray *viewControllers; 
} 
- (IBAction)SegmentToggle:(UISegmentedControl *)sender; 
@property (strong, nonatomic) IBOutlet UIView *containerView; 

UIView.m

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Storyboard_iPhone" 
                bundle:nil]; 

firstView *FirstView = [sb instantiateViewControllerWithIdentifier:@"firstOne"]; 
secondView *SecondView = [sb instantiateViewControllerWithIdentifier:@"secondOne"]; 

viewControllers = [NSMutableArray arrayWithObjects:FirstView,SecondView,nil]; 

currentController = FirstView; 

[containerView addSubview:FirstView.view];//containerView = self.view 

然后取决于什么段被选择,它示出了不同的观点:

- (IBAction)SegmentToggle:(UISegmentedControl *)sender { 
    UIViewController *selectedView=nil; 

    if (sender.selectedSegmentIndex==0) { 
     selectedView= [viewControllers objectAtIndex:0]; // retrieve object at index 0 from viewControllers array 

    } 
    else if(sender.selectedSegmentIndex==1){  
     selectedView= [viewControllers objectAtIndex:1]; // retrieve object at index 1 from viewControllers array 

    } 

    [currentController.view removeFromSuperview]; // remove Current displaying view from superView 
    currentController=selectedView; // make selected View to be the current View 
    [containerView addSubview:selectedView.view]; // Add newly selected view on container View 
} 

secondView是tableViewController,当我选择第二段时,一切都很好。当我选择第一个它显示,但滚动不起作用,我不知道为什么。

firstView.m viewDidLoad方法看起来是这样的:

-(void)viewDidLoad{ 
    [super viewDidLoad]; 
    mainScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    [mainScrollView setContentSize:CGSizeMake(320, 600)]; 
    [mainScrollView setScrollEnabled:YES]; 
} 

寻呼在故事板启用。它和firstView的.h文件连接起来。 请告诉我我做错了什么。

+0

请发布'firstView.m'的所有​​布局代码。你真的调用'[self.view addSubview:mainScrollView];'? – Eric 2013-02-17 17:47:45

+0

我已更新问题 – ignotusverum 2013-02-17 17:53:02

回答

0

当你调用-SegmentToggle:

  • 创建一个名为局部变量selectedView
  • 你根据什么段视图控制器分配给selectedView选择
  • 的方法结束,selectedView超出范围

总之,你没有做任何事情。您至少应该用当前视图层次结构中的视图替换所选控制器视图中的视图(并可能在实例变量中存储对所选控制器的引用以供以后查找?)

但是退一步说,它看起来像你试图创建一个视图控制器来管理其他视图控制器。现在有关iOS 5的非常具体的规则。有关更多信息和示例,请参阅WWDC 2011 video,名为“Implementing UIViewController Containment”。

+0

哦,对不起,我的不好,忘了这个代码,检查更新 – ignotusverum 2013-02-17 18:15:34

+0

你没有向我们展示'currentController'是如何定义的,所以我们在同一条船上。但不管我的建议是一样的。观看视频。有几个原因可能导致您不想将新的托管子视图投放到本身已由控制器管理的视图中。该视频解释了为什么和正确的方式来做到这一点。 – jemmons 2013-02-17 22:52:53

+0

或者,如果你不是电影类型,[这是一个博客文章](http://www.cocoanetics.com/2012/04/containing-viewcontrollers/),大部分相同的东西。 – jemmons 2013-02-17 22:56:18