0

我有两个 ViewController:A 和 B。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 方法,您不会将视图从一个视图控制器移动到另一个视图控制器。您正在移动视图的位置。问题是被关闭的视图控制器将不再是屏幕的一部分,因此它不可见。我的建议是实现 iOS 5 UIViewController 遏制并将被解雇的视图控制器添加为另一个视图控制器的子视图控制器。这是因为模态视图控制器中包含的信息(控件、动作目标和模型)是模态视图控制器的一部分。检查 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 (例如名为 sender )属性。

当您进行转换时,将 B 中的 sender 属性设置为 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 回答