-1

XIBUIViewControllerからのいくつかのサブビュー (ViewController のビュー) を使用して、それらは を使用する間で選択されUISegmentedControlます。これらのビューの 1 つにUIScrollView. 問題は、このサブビューが初めて追加されたときUIScrollViewにスクロールできないことです。別のセグメント/ビューを選択してから、もう一度あるセグメント/ビューを選択すると、スクロール可能になりました。UIScrollView

UIScrollViewIB のみに追加されます。これは MainViewController.m のビューと UISegmentedControl のコードの一部です。

- (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 が含まれているとします。このセグメントを選択すると、セグメント 0 ( ) を再度選択してセグメント 1 を再度UIScrollView選択しない限り、 はスクロールに反応しません。nameSubView

これは何が原因で、どのように修正するのですか?

4

1 に答える 1

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;
}
于 2012-10-31T13:16:47.140 に答える