0

Facebook スタイルのスワイプ効果のためにアプリで ECSlidingViewController を使用しています。私は2つのTopViewControllers、1つの左側と1つの右側のView Controller、およびslingviewcontrollerサブクラスである1つのinitviewcontrollerを持っています。

1. InitViewController:ECSlidingViewController

2.MainViewController (トップビューコントローラー)

3.LeftMenuViewContrller (UIViewController)

4.RightMenuViewController (UIViewController)

5.DetailViewController (トップビューコントローラー)

カレンダーイベントを含む MainViewController にテーブルビューがあります。問題は、 tableView:didSelectRowAtIndexPath:メソッドのイベントをクリックして MainViewController から DetailViewController に移動し、イベントの詳細を表示することです。DetailViewController にアクセスする次のコードを使用しています

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

これは私のviewDidLoadメソッドです

 - (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 や Modal スタイルのようなアニメーションを取得したい

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

また

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

助けてください。ありがとうございました。

4

1 に答える 1

0

ストーリーボードを使用していますか?Segueを実行していただけますか?ストーリーボードでは、名前とリンクとスタイルをトランジションと共にモーダルとして設定します。

あなたの DidSelectRowAtIndex にこれを入れてください

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

次に、このメソッドを宣言します

-(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
}

次に、 DetailsViewController.h に入れます

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

そして .m put に

@synthesize eventRow;

DetailsViewController でアニメーション化する必要があり、スライドは無効になります (すべての ECS ビットを通常として宣言しない限り)。どのセルがクリックされたかを示す Int eventRow もあります。

戻るボタンを作成してこれを行うことができます。

[self dismissViewControllerAnimated:YES completion:nil];

編集

または、これを試すこともできますが、アニメーション化されるかどうかはわかりません。さらに、ものを渡す方法を理解する必要があります。おそらく2つの組み合わせです...

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];
于 2013-07-23T16:11:28.377 に答える