解除了modalViewController后移动ViewController的视图

时间:2012-08-29 21:46:22

标签: ios uiviewcontroller

我有两个ViewControllers: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){}];
}

2 个答案:

答案 0 :(得分:0)

查看moveViews方法,您不会将视图从一个视图控制器移动到另一个视图控制器。您正在移动视图的位置。问题是被解除的视图控制器将不再是屏幕的一部分,因此它不可见。我的建议是实现iOS 5 UIViewController包含并将被解除的视图控制器添加为另一个视图控制器的子视图控制器。这是因为模态视图控制器(控件,动作目标和模型)中包含的信息是模态呈现的视图控制器的一部分。查看UIViewController类的文档和这里提到的包含:

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

答案 1 :(得分:0)

我认为问题是,你在这里调用[self moveViews:self];视图B上的方法。

在B中有一个id(例如名为sender)属性。

进行转换时,将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);                        
      }
                     ];
}

应该工作,玩得开心