0

我有一个 ViewController 呈现另一个视图控制器。当第二个被解雇时,我在第一个控制器中设置了一个布尔值,isFromSecondView,设置为 true。因此,当我的第一个 ViewController 再次可见时,会调用 viewWillAppear,我可以从那里移动控制器内的一些视图。此方法工作正常,并且 viewWillAppear 方法可以决定它是否来自第二个视图控制器。但是我无法移动控制器内的视图,即使它正在被调用。这种方法是我应该这样做的方式,还是在第二个控制器被解除时有另一种方式来移动视图?

编辑,添加视图移动方法:

- (void)moveViews
{
    NSLog(@"moving view");
    [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

dismissViewControllerAnimated有一个可以使用的完成处理程序。这将在控制器完成解除后立即执行您的动画代码。当然,如果您使用它,您需要更改在另一个控制器中执行的处理程序 this。

[self dismissViewControllerAnimated:YES completion:^{
    NSLog(@"moving view");
    [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){}];
}
于 2012-08-30T13:33:57.323 回答
0

您可以在需要时使用 viewWillLayoutSubviews(在您的控制器中)来布局您的视图。

例子:

- (void)viewWillLayoutSubviews
{
  [super viewWillLayoutSubviews];
  // self.oneView.center = ...
  // self.anotherView.center = ...
}
于 2015-05-28T16:02:29.163 回答