2012-10-31 57 views
-1

我使用UIViewController与XIB的几个子视图(ViewController的视图),它们是在使用UISegmentedControl之间选择的。其中一种观点包含UIScrollView。问题是UIScrollView不可滚动第一次这个子视图被添加。如果我选择另一个细分/视图,然后再选择UIScrollView,那么现在它是可滚动的。带有子视图的ViewController,UIScrollView不可滚动的第一次

UIScrollView只有IB增加。这是一些对意见和UISegmentedControl代码的MainViewController.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

nameSubViewController = [[NameSubViewController alloc] initWithNibName:@"NameSubViewController" bundle:nil]; 
nameSubView = (NameSubView *)[nameSubViewController view]; 

priceSubViewController = [[PriceSubViewController alloc] initWithNibName:@"PriceSubViewController" bundle:nil]; 
priceSubView = (PriceSubView *)[priceSubViewController view]; 

[self.view addSubview:nameSubView]; 
currentView = nameSubView; 
} 

- (void) segmentAction:(id)sender 
{ 
segmentedControl = sender; 
if([segmentedControl selectedSegmentIndex] == 0) { 
    [currentView removeFromSuperview]; 
    [self.view addSubview:nameSubView]; 
    currentView = nil; 
    currentView = nameSubView; 
} 
if([segmentedControl selectedSegmentIndex] == 1) { 
[currentView removeFromSuperview]; 
[self.view addSubview:priceSubView]; 
    currentView = nil; 
    currentView = priceSubView; 
} 

在这段代码中,假设1段(priceSubView)包含的UIScrollView。如果我选择此段,那么UIScrollView不会对滚动作出反应,除非我再次选择段0(nameSubView)并重新选择段1.

什么是造成这种情况以及如何解决这个问题的?

+1

尝试[myScrollView setScrollEnabled:YES];在viewDidAppear – Kassem

+0

'PriceSubViewController'如何看起来像?我的想象力情景是'scrollView.contentSize'在设计正确的contentSize之前以某种方式设置。 – barley

+0

我想你只是在段被改变后才添加滚动视图。在第一次加载时,你不添加scrollView,我是否正确? –

回答

0

如果您需要在第一次加载时滚动。 您需要在firstLoad中添加scrollView。 您正在更改段控件后添加滚动视图,这就是为什么它不滚动。一探究竟。

变化viewDidLoad像:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    nameSubViewController = [[NameSubViewController alloc] initWithNibName:@"NameSubViewController" bundle:nil]; 
    nameSubView = (NameSubView *)[nameSubViewController view]; 

    priceSubViewController = [[PriceSubViewController alloc] initWithNibName:@"PriceSubViewController" bundle:nil]; 
    priceSubView = (PriceSubView *)[priceSubViewController view]; 

    [self.view addSubview:priceSubView]; 
    currentView = priceSubView; 
} 
相关问题