0

UISplitViewController と UISegmentedControl の両方を使用してユニバーサル アプリを作成しています。UISegmentedControl の各コントローラは編集できます。セグメントが現在のセグメントになると、コントローラの編集状態を再確立する必要があるようです。私の問題は、[vc setEditing:YES animation:NO]. 誰かがこれを回避する方法を提案できますか? ありがとうございました。

- (void)segmentChanged:(UISegmentedControl *)sender
{ 
    UIViewController *vc = [self viewControllerForSegmentIndex:sender.selectedSegmentIndex];
    [self addChildViewController:vc];

    [self transitionFromViewController:self.currentViewController toViewController:vc duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
        [self.currentViewController.view removeFromSuperview];
        vc.view.frame = self.view.bounds;
        [self.view addSubview:vc.view];
        [vc setEditing:YES animated:NO];
    } completion:^(BOOL finished) {
        [vc didMoveToParentViewController:self];
        [self.currentViewController removeFromParentViewController];
        self.currentViewController = vc;
    }];
4

1 に答える 1

0

不適切なアニメーションを回避するために、setEditing と viewWillAppear で Controller の表示の準備を完了しました。

   [self transitionFromViewController:self.currentViewController toViewController:vc duration:0.3 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
        [self.currentViewController.view removeFromSuperview];
        vc.view.frame = self.view.bounds;
        [self.view addSubview:vc.view];
        [vc setEditing:YES animated:NO];
        [vc viewWillAppear:NO]; 
    } completion:^(BOOL finished) {
        [vc didMoveToParentViewController:self];
        [self.currentViewController removeFromParentViewController];
        self.currentViewController = vc;
    }];
于 2013-01-03T11:55:28.327 に答える