2012-03-22 10 views
0

メソッドの呼び出し時にこのUIViewが正しく表示されない理由がわかりません。別のビューコントローラで動作します。 RootViewControllerで試してみると、NSLog出力は正常に動作しますが、ビューはアニメーション化されません。私はそれが表示されているが、見えていないのだろうかと思っています。どんな助けも素晴らしいだろう。メソッドが呼び出されたときにUIViewが正しく表示されない

- (IBAction)showView:(id)sender{ 

    NSLog(@"showView button pressed"); 

    [self.view addSubview: menuView]; 
    [self.view bringSubviewToFront:menuView]; 

    CGRect rect = menuView.frame; 
    rect.origin.x = 60; 
    rect.origin.y = -400; 
    menuView.frame = rect; 
    [UIView beginAnimations:@"ShowView" context:nil]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationDuration:0.5]; 
    rect.origin.y = 65; 
    menuView.frame = rect; 

    [UIView commitAnimations]; 

} 
+0

を呼び出す際にログインしている何のNSLog(@ "を表示します。%@"、self.view); '他のNSLogの下に? – JNK

+0

slog out putは次のとおりです。表示:> – hanumanDev

答えて

2

これはあなたのRootViewControllerで働いていた、あなたはSHOWVIEWをコピー仕事はありません。 @ kl94とのあなたの会話は残りを説明します。 menuViewは宣言されていますが、新しいView Controllerで初期化されていません。

私は、RootViewControllerが動作している場所に戻ると、menuViewが初期化されているコードを見つけることができます:... menuView = [[SomeViewClass alloc] init .....]そのコードは、新しいビューコントローラも。まともな場所は、viewDidLoadメソッドです。

@Amiramixには、ブロックアニメーションを使用する方法が同意します。次のように私は、コードをお勧めしたい:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // code copied from RootViewController that initializes menuView 
    // probably, the frame is set so that the menu is positioned off the visible part of the view 
    [self.view addSubview:menuView]; 
} 

- (IBAction)showView:(id)sender{ 

    NSLog(@"showView button pressed, menu view is %@", menuView); 

    [UIView animateWithDuration:0.5 animations:^{ 
     menuView.frame = CGRectMake(/* the rect where you want the menu to end up */); 
    }]; 
} 
2

私はあなたのメニュービュー、IBのビューをよくリンクしていますか?
NSLog(@"%@", menuView);をシンプルにして、表示内容を教えてください。

+1

それは(null)を返します。私は私のメニューを推測しているビューはリンクされていません。私はIBを使用していません。プログラムからmenuViewをリンクするにはどうすればいいですか?あなたの助けてくれてありがとう – hanumanDev

+0

これはあなたが存在しないビューを使用していることを意味します。どこにどのように宣言しましたか? – klefevre

1

subviewを追加すると自動的に他のビューの前に配置されるため、bringSubviewToFrontに電話する必要はありません。また、フレームをbeginAnimiation - commitAnimationブロック内に設定する必要があります。最後に、例えば、あなたの問題をデバッグのためにも、場合にのみ、新しいanimateWithDuration方法を使用することを検討してください:新しいビューコントローラにコードと、それはdoesnの:

void (^block)(void) = ^{ 
    [self->textView setFrame:CGRectMake(0, 0, self.bounds.size.width, keyboardView.origin.y)]; 
}; 

[UIView animateWithDuration:0.2 animations:block]; 
関連する問題