2013-07-20 3 views
0

내 앱에서 Facebook 스타일 스 와이프 효과를 위해 ECSlidingViewController를 사용하고 있습니다. 두 개의 TopViewController, 한 개의 왼쪽 및 오른쪽 뷰 컨트롤러 및 한 개의 initviewcontroller (slidingviewcontroller 하위 클래스)가 있습니다.ECSlidingViewController IOS에서 애니메이션을 사용하여 하나의 TopViewController에서 다른 TopViewController로 이동하는 방법

1 InitViewController : ECSlidingViewController

2.MainViewController (TopViewController)

3.LeftMenuViewContrller (UIViewController에)

4.RightMenuViewController (UIViewController에)

5.DetailViewController (TopViewController)

캘린더 이벤트가 포함 된 MainViewController에서 tableview가 있습니다. 문제는 내가 의 테이블 뷰 : didSelectRowAtIndexPath : 이벤트를 클릭하여 DetailViewController에 MainViewController로 이동하여 일부 애니메이션이있는 다른 Topview 컨트롤러 인 이벤트 세부 정보를 표시하는 것입니다. (지금까지는 얻을 수 없습니다). 나는

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    self.view.layer.shadowOpacity = 0.75f; 
    self.view.layer.shadowRadius = 10.0f; 
    self.view.layer.shadowColor = [UIColor blackColor].CGColor; 

    if (![self.slidingViewController.underLeftViewController isKindOfClass:[LeftViewController class]]) { 
     self.slidingViewController.underLeftViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Left"]; 
    } 

    if (![self.slidingViewController.underRightViewController isKindOfClass:[RightViewController class]]) { 
     self.slidingViewController.underRightViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Right"]; 
    } 

    [self.view addGestureRecognizer:self.slidingViewController.panGesture]; 

} 

내가 UINavigationController가 또는 모달 스타일

[self.navigationController pushViewController:newTopViewController animated:YES]; 

같은 애니메이션을 얻고 싶은 내있는 viewDidLoad의 방법 DetailViewController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 
DetailsViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"details"]; 
    self.slidingViewController.topViewController = newTopViewController; 
    [self.slidingViewController resetTopView]; 
} 

에 저를 받고 다음 코드를이됩니다 사용하고 또는

[self presentViewController:newTopViewController animated:YES completion:nil]; 

도와주세요. 고맙습니다.

+0

동일한 문제가 발생하여 segue를 사용 중입니다. 그러나 내가 원하는 푸시 애니메이션을 잃어 버립니다. 이것을 알아내는 데 필요한 모든 업데이트가 있습니까? –

답변

0

Storyboard를 사용하고 있습니까? Segue를 수행 할 수 있습니까? 스토리 보드 설정에서 이름과 링크 및 스타일을 전환과 함께 모달로 표시합니다. 당신의 DidSelectRowAtIndex에서

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:@"eventDetail"]) 
    { 
     DetailsViewController *destViewController = segue.destinationViewController; 
     destViewController.eventRow = sender; 
    } 
    // You can test for other Segue names here 
} 

그런 다음이 방법을 선언이

[self performSegueWithIdentifier:@"eventDetail" sender:@(indexPath.row)]; 

을 넣어 DetailsViewController.h에

// Allows sending View Controller to give this controller data 
@property (nonatomic, strong) int *eventRow; 

을 넣고하는 .m에

를 넣어
@synthesize eventRow; 

이제 DetailsViewController에 애니메이션이 적용되어야하며 모든 ECS 비트를 정상적으로 선언하지 않는 한 슬라이딩을 사용할 수 없습니다. 또한 클릭 한 셀을 알려주는 Int eventRow도 있습니다.

뒤로 버튼을 만들고 이렇게 할 수 있습니다.

[self dismissViewControllerAnimated:YES completion:nil]; 

편집

또는 당신이 시도 할 수 있지만, 나는 그것이 애니메이션 것인지 확실하지 오전 플러스 당신이 물건, 두 어쩌면 조합을 전달하는 방법을 알아 내야 ...

UIViewController *newTopViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"eventDetail"]; 

CGRect frame = self.slidingViewController.topViewController.view.frame; 
self.slidingViewController.topViewController = newTopViewController; 
self.slidingViewController.topViewController.view.frame = frame; 
[self.slidingViewController resetTopView]; 
+0

Justed는 CellAt가 아니라 DidSelect를 편집했습니다. –

+0

답장을 보내 주셔서 감사합니다. 예. 스토리 보드를 사용하고 있습니다. 내가 제안한 옵션을 시도했지만 네비게이션 및 슬라이딩을 위해 ecslidingviewcontroller를 사용할 때 언급 한 메소드는 앱을 실행하고 행을 클릭 할 때만 처음으로 작동합니다. 세부 사항 아래 다른보기 컨트롤러 및 내 애플 리케이션에 대한 메뉴를 보여주는 MainViewController 있습니다. – suhit

+0

나는 ECSlidding을 사용하는 응용 프로그램을 만들었고 다른 뷰로 푸시하는 많은 컬렉션 뷰와 테이블을 가지고있다. 나는이 방법을 사용한다고 생각했지만 어쩌면 그것을 어지럽히는 다른 것일 수도 있습니다. 코드를 찾아서 확인해 보겠습니다. –