2012-08-30 3 views
0

다른보기 컨트롤러를 표시하는 ViewController가 있습니다. 두 번째 세션이 닫히면 첫 번째 컨트롤러 인 isFromSecondView가 true로 설정된 부울을가집니다. 따라서 첫 번째 ViewController가 다시 표시되면 viewWillAppear이 호출되고 거기에서 컨트롤러 내의 일부 뷰를 이동할 수 있습니다. 이 메서드는 잘 작동하며 viewWillAppear 메서드는 두 번째 뷰 컨트롤러에서 온 것인지 아닌지를 결정할 수 있습니다. 그러나 컨트롤러가 호출되는 동안에도 컨트롤러 내부의 뷰를 이동할 수는 없습니다. 이 방법은 내가 이렇게 해야하는 방법입니까, 아니면 두 번째 컨트롤러가 해제 될 때 다른 방법으로 뷰를 이동시킬 수 있습니까?viewcontroller가 닫힐 때 UIView의 위치 변경

- (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){}]; 
} 
+0

당신이'UIView'의 전환에 대한 몇 가지 코드를 게시 할 수 있을까요? – Peres

+0

위의 viewWillAppear에서 호출되는 메서드가 추가되었습니다. – user1596328

+0

'view'와'addView'는 nil입니까? – Peres

답변

0

dismissViewControllerAnimated 당신이 사용할 수있는 완료 핸들러가 :

편집, 방법 동영상보기를 추가했다. 컨트롤러가 해제되면 곧바로 애니메이션 코드가 실행됩니다. 물론 다른 컨트롤러에서 핸들러를 변경해야 할 필요가있을 것입니다.

[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){}]; 
} 
+0

나는 이미 그 코드를 실행했지만 아무 일도 일어나지 않았습니다. 나는보기가 어떤 이유 때문에 무관하다고 생각합니까? 내가 그걸 고칠 수있는 어떤 생각? – user1596328

0

필요할 때마다 viewWillLayoutSubviews를 사용하여 컨트롤러의 뷰를 레이아웃 할 수 있습니다.

예 :

- (void)viewWillLayoutSubviews 
{ 
    [super viewWillLayoutSubviews]; 
    // self.oneView.center = ... 
    // self.anotherView.center = ... 
} 
관련 문제