6

画面遷移について質問です。

画面遷移にはpresentViewControllerメソッドをよく使います。

NextViewController *nextViewController = [[NextViewController alloc] init];
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);    
[self presentViewController:nextViewController animated:YES completion:nil];

しかし、私が実装したview.frame設定は適用されません。

次のコードは正しく実行されます。

NextViewController *nextViewController = [[NextViewController alloc] init];
[self presentViewController:nextViewController animated:YES completion:nil];
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);

これらのコードの違いは何ですか? view.frame は presentViewController メソッドで再定義されていますか?

ありがとう。

4

3 に答える 3

5
NextViewController *nextViewController = [[NextViewController alloc] init];
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);    
[self presentViewController:nextViewController animated:YES completion:nil];

まだ作成されていないnextViewControllerのビューを設定しているため、上記のコードは機能していません。

したがって、次のコードでは、最初にView Controllerをロードしてから、ロードされたビューのフレームを変更します。

=========================編集======================== ===

ビューコントローラでフレームを直接設定する場合は、ビューをでバインドしてからIBOutlet

- (void) viewDidAppear:(BOOL)animated
 {
      //set the frame here
      self.myView.frame = CGRectMake(10, 10, 200, 400);
 }

それが役に立てば幸い :)

于 2012-12-19T06:13:19.173 に答える
1

ビューコントローラーを提示する前にself.viewは作成されません。

ie) nextViewController.view.frame は [self presentViewController:nextViewController アニメーション:YES 完了:nil] の前では無効です。

于 2012-12-19T06:04:35.830 に答える
0

を提示してnextViewControllerから、そのさまざまなプロパティを更新できるのはあなただけです。ビューがビューに読み込まれる前に実行すると、失敗します。ビューを表示してから更新します。

于 2012-12-19T06:24:51.703 に答える