0

A と B の 2 つの ViewControllers があります。A は B のデリゲートです。A から B を提示しています。それを閉じると、A のビューを移動しようとしています。 B は却下され、ビューを移動しようとします。これは、Bが却下されたときに現在使用しているものですが、機能しません。どうすればこれを機能させることができますか?

[self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"view dismissed");
    [self moveViews:self];
}];

- (IBAction)moveViews:(id)sender
{
    [UIView animateWithDuration:0.5
                     animations:^{
                         self.view.center = CGPointMake(160, 250);
                         //self.tableView.center = CGPointMake(160, -100);
                         self.addView.center = CGPointMake(160, 240);
                     }
                     completion:^(BOOL finished){}];
}
4

2 に答える 2

0

moveViews メソッドを見ると、あるView Controllerから別のView Controllerにビューを移動していません。ビューの位置を移動しています。問題は、閉じられるView Controllerが画面の一部ではなくなるため、表示されないことです。私のお勧めは、iOS 5 UIViewController コンテインメントを実装し、閉じられたビュー コントローラーを他のビュー コントローラーの子ビュー コントローラーとして追加することです。これは、モーダル View Controller に含まれる情報 (コントロール、アクションのターゲット、およびモデル) が、モーダルに表示される View Controller の一部であるためです。UIViewController クラスのドキュメントと、ここに記載されている内容を確認してください。

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIViewController_Class/Reference/Reference.html

于 2012-08-29T22:21:45.953 に答える
0

[self moveViews:self];問題は、ここでビュー B のメソッドを呼び出すことだと思います。

B に id (たとえば、送信者という名前) プロパティがあります。

遷移を行うときは、B の送信者プロパティを A に設定します。

電話

    [self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"view dismissed");
    [self.sender performSelector:@selector(moveViews)];
}];

その後、B は却下され、A でメソッド moveViews を呼び出します。

Aにはメソッドがあります

    - (void)moveViews
{[UIView animateWithDuration:0.5
                     animations:^{
                         self.view.center = CGPointMake(160, 250);                        
      }
                     ];
}

働くべきだ、楽しむべきだ

于 2012-08-29T22:22:46.153 に答える