0

同じビューコントローラ(popOverウィンドウ)に2つのビュー(A&B)があり、それらを切り替えたい場合、ビューAはビューBよりも大きいです。popOverウィンドウが最初に読み込まれたときに、ビューAのみが表示され、特定のボタンを押したときに表示されます。その内部では、ビューBがその上に表示されるように縮小する必要があります。ウィンドウが最初に読み込まれるときに、ビューBの高さをすべてのウィンドウに収まるように設定してから(viewDidLoad内)、その高さを減らし、もう一方の高さを増やします。ボタンがクリックされたときに表示されます。そのコードを試してみましたが、表示の高さは変わりませんでした。

-(void)viewDidLoad
{
[super viewDidLoad];
UIView *contactsView=[self.view viewWithTag:2];// is this a correct initialization of a  uiView from a view in a storyBoard ?
CGRect frame=contactsView.frame;
frame.size.height+=100;
contactsView.frame=frame;
}

それについてのアイデアは役に立ちます、ありがとう。

4

1 に答える 1

0

一般的な回答として (詳細を説明する時間はありません)、全体として 3 つのビューを使用します。

1) ビュー コントローラーが所有するビュー。2) ビュー A 3) ビュー B

ビュー A とビュー B は、View Controller の viewDidLoad で作成できます。次に、これらのそれぞれのフレームの位置とサイズを設定します。両方をビューに追加します。

// .h ファイルに次の変数を作成します。

UIView* m_vA;
UIView* m_vB;

- (void)viewDidLoad
{
    m_vA = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, 50.0, 50.0)] autorelease];
    m_vB = [[[UIView alloc] initWithFrame:<your rect for View B>] autorelease];

    // The views will automatically be retained. 
    [self.view addSubview:vA];
    [self.view addSubview:vB];

    m_vB.hidden = YES;
}

// In your button callback, toggle the visibility of views
- (IBAction)buttonPressed:(id)sender
{
    // Toggle the visibility of views
    m_vA.hidden = !m_vA.hidden;
    m_vB.hidden = !m_vB.hidden;
}

// dealloc と viewDidUnload でこれらのビューのメモリをクリーンアップすることを忘れないでください。

于 2012-05-01T23:21:32.883 に答える