0

プッシュを使用して別のページに移動しています。ご存知のように、それは常に右から左に移動します。私はそれがこのように機能することを望みます:

1-現在のページの左側にあるボタンをクリックすると、左から右に表示されます。

2-現在のページの右側にあるボタンをクリックすると、右から左に表示されます。

3-現在のページを読み込むボタンをクリックすると、[上へ]が表示されます。(モーダルのように)

これは、UIStoryboardSegueカスタムSegueを実装して作成することで試したものです。

- (void) perform {

    UIViewController *src = (UIViewController *) self.sourceViewController;
    [src.navigationController popViewControllerAnimated:YES];
}

また:

- (void) perform {

    UIViewController *src = (UIViewController *) self.sourceViewController;
    [UIView transitionWithView:src.navigationController.view duration:0.5
                       options:UIViewAnimationOptionTransitionFlipFromBottom
                    animations:^{
                        [src.navigationController popToViewController:[src.navigationController.viewControllers objectAtIndex:0] animated:NO];;
                    }
                    completion:NULL];
}

しかし、彼らは私が望む方法で働いていません。プッシュセグエのように動作させたい(viewDidLoadが欲しい、...が再び呼び出される)助けてくれませんか?(あなたの答えでいくつかのコードを共有してください)

4

2 に答える 2

0

IIViewDeckControllerあなたが望むようなものです。

このデモを参照してください。

IIViewDeckControllerオープンソース

scoop.itのIIViewDeck

于 2012-10-18T10:13:07.000 に答える
0

これは私がする必要があることです:

-(void)perform {  
   UIViewController *sourceViewController = (UIViewController*)[self sourceViewController];
   UIViewController *destinationController = (UIViewController*)[self destinationViewController];                    

   CATransition* transition = [CATransition animation];
   transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
   transition.type = kCATransitionPush;
   transition.subtype = kCATransitionFromLeft; 
   [sourceViewController.navigationController.view.layer addAnimation:transition forKey:kCATransition];
   [sourceViewController.navigationController pushViewController:destinationController animated:NO];    
}

乾杯!

于 2012-10-18T19:48:17.147 に答える