2012-01-24 16 views
0

iPhone/iPadアプリケーションで作業していて、ボタンではなく関数呼び出しでビューを切り替えようとしています。私はボタンでトリガされたビューを切り替える多くのソースを見てきましたが、関数によってトリガされたビューを切り替える方法については何も説明していません。私は自分でこれをやろうとしましたが失敗しました。私が試したコードは次のとおりです。関数を使ってビューを切り替える

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    if (self.webview == nil) { 
     self.webview = [[MainViewController alloc] init]; 
     /* webview initialized with storyboard */ 
     if (self.view.superview == nil) { 
      [self.view insertSubview:self.webview.view atIndex:0]; 
     } 
     [storyboard release]; 
    } 
} 

これはviewController.mのviewDidLoadです。まず、WebViewを表示します。

- (void)changeView { 
    self.normview = [[AlternateViewController alloc] init]; 
    /* normview initialized with storyboard */ 

    [UIView beginAnimations:@"View Flip" context:nil]; 
    [UIView setAnimationDuration:0.75]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 

    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES]; 
    [self.webview viewWillDisappear:YES]; 
    [self.webview viewDidDisappear:YES]; 
    [self.webview.view removeFromSuperview]; 
    [self.view insertSubview:self.normview.view atIndex:0]; 
    [self.normview viewWillAppear:YES]; 
    [self.normview viewDidAppear:YES]; 

    [UIView commitAnimations]; 
} 

そして(viewController.mで)このchangeView関数が呼び出されたとき、それは(同じコードがボタンによってトリガーされたときに実際に、それが正常に動作します)のWebViewからnormviewにビューを変更する必要があります。しかし、私が他のファイル(viewController.mではなく)でこの関数を呼び出すと、

ViewController *viewcontroller = [[ViewController alloc] init]; 
[viewcontroller changeView]; 

これは機能しません。誰でもこれを解決するための手がかりを与えることができますか? (psの私はiPadでテストしています。。)あなたはこの機能でビューを切り替えることができ

答えて

0

YourView *screen = [[YourView alloc] initWithNibName:nil bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES]; 
    [screen release]; 

あなたのwillingsにmodaltransitionstyleを設定することができます。

ヘッダーファイルをクラスの先頭にインポートすることを忘れないでください。

#import "YourView.h" 
+0

コメントありがとうございましたが、私はすでにそれを知っていました。しかし、実際に私がしたいのは、あなたが説明したように、画面の代わりにimagepickerをimageviewerをwebviewに提示していたからです。しかし、それが(ボタンではなく)外部関数によってトリガーされた場合、仕事。だからこそ私は、viewDidAppearがトリガされたときに、現在のimagepickerをノーマルビューで表示するように、ビューを切り替えようとしました。 presentModalViewController:アニメーションが他のファイル(View Controller.mではなく)から呼び出されたときに動作するようにすることができれば、ビューを切り替える必要はありません。私に解決策を教えてもらえますか? –

関連する問題