2012-12-27 9 views
8

私はUIViewControllerを持っていて、それにUIScrollViewを追加したいですか?UIViewControllerにUIScrollViewを追加する

Iキャンは、私はスクロール機能を取得するように、既存のUIViewControllerUIScrollViewを追加した場合、あなたはそれにUIViewControllerを追加するUIScrollViewを持っている場合、私は、それが可能である知っているが、その逆は本当だった場合、私も興味。

編集

私は答えを見つけたと思う:Adding a UIViewController to UIScrollView

+0

UIViewControllerのビューにUIScrollViewを追加して、UIViewControllerをUIScrollViewに表示することができます –

+0

このようなことをする前に、コントローラとビューを見ていきます。彼らは本当に異なるものです。 – Mert

+0

スクロールビューをビューコントローラに追加してコントローラをスクロールビューに表示することができます。スクロールビューを既存のviewControllerにサブビューとして追加することができます – Talha

答えて

20

UIViewControllerview性質を有しています。したがって、viewUIScrollViewを追加できます。つまり、スクロール・ビューをビュー階層に追加することができます。

これはコードまたはXIBによって実現できます。さらに、ビューコントローラをスクロールビューのデリゲートとして登録することもできます。このようにして、さまざまな機能を実行するためのメソッドを実装できます。 UIScrollViewDelegateプロトコルを参照してください。

// create the scroll view, for example in viewDidLoad method 
// and add it as a subview for the controller view 

[self.view addSubview:yourScrollView]; 

またUIViewControllerクラスのloadViewメソッドをオーバーライドして、あなたが検討しているコントローラのメインビューとしてスクロールビューを設定することができます。

編集

私はあなたのために少しのサンプルを作成しました。ここには、UIViewControllerのビューの子としてスクロールビューがあります。スクロールビューには、子としてのビューが2つあります。view1(青色)とview2(緑色)です。

ここでは、水平方向または垂直方向のいずれかの方向にのみスクロールできるとします。以下では、水平方向にスクロールすると、スクロールビューが期待通りに機能することがわかります。あなたは垂直方向にのみ、以下のように変更することができますスクロールする必要がある場合は

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)]; 
    scrollView.backgroundColor = [UIColor redColor]; 
    scrollView.scrollEnabled = YES; 
    scrollView.pagingEnabled = YES; 
    scrollView.showsVerticalScrollIndicator = YES; 
    scrollView.showsHorizontalScrollIndicator = YES; 
    scrollView.contentSize = CGSizeMake(self.view.bounds.size.width * 2, self.view.bounds.size.height);  
    [self.view addSubview:scrollView]; 

    float width = 50; 
    float height = 50; 
    float xPos = 10; 
    float yPos = 10; 

    UIView* view1 = [[UIView alloc] initWithFrame:CGRectMake(xPos, yPos, width, height)]; 
    view1.backgroundColor = [UIColor blueColor];  
    [scrollView addSubview:view1]; 

    UIView* view2 = [[UIView alloc] initWithFrame:CGRectMake(self.view.bounds.size.width + xPos, yPos, width, height)]; 
    view2.backgroundColor = [UIColor greenColor];  
    [scrollView addSubview:view2]; 
} 

は:

scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height * 2); 

を明らかに、あなたはview1view2の位置を再配置する必要があります。

P.S.ここで私はARCを使用しています。 ARCを使用しない場合は、明示的にrelease alloc-initオブジェクトが必要です。

+0

こんにちは私はこれを考え、ViewControllerにサブビューとしてUIScrollViewを追加しました。「スクロール機能」を許可するかどうかは疑問でした。) – user1903992

+0

@ user1903992もちろん、スクロールビューがサブビューとして追加されている場合は、その上に表示されます。スタックのようなビュー階層を考えてみましょう。スクロールビューはユーザーの操作に応答します。 –

+0

それで、あなたがビューを追加しているときはいつも、それは*上に*座っていますか?うーん.....興味深い...それは...実際にスタックのように見えるか分からなかった。 – user1903992

関連する問題