2

セグエviewDidAppearを終了するときにヒットしないようにする方法を知っている人はいますか?UIModalTransitionStylePartialCurl

- (IBAction)buttonSelector:(id)sender
{

    // creating object for title screen
    UIStoryboard *storySelection =[UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    // creating object for profile view
    selectorViewController = [storySelection instantiateViewControllerWithIdentifier:@"Verse Selector"];

    // setting the transition style
    selectorViewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;

    // performing the segue
    [self presentViewController:selectorViewController animated:YES completion:nil];
}

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    // testing for a return from segue
    if (selectorViewController != nil)
    {
        // getting the chosen values from the instance
        chosenBook = selectorViewController.chosenBook;

        // setting instance to nil for garbage collection
        selectorViewController = nil;
    }
}
4

2 に答える 2

1

編集

提示されたView Controllerが破棄されていることを提示しているView Controllerに通知するカスタムデリゲートプロトコルを実装するのが最善の方法のようです。

于 2013-02-24T22:36:09.953 に答える
0

これを行う 1 つの方法は、モーダルに表示されたビュー コントローラーへのデリゲートとして初期ビュー コントローラーを設定することです。ビュー コントローラを提示する前に:

selectedViewController.delegate = self;
[self presentViewController:selectorViewController animated:YES completion:nil];

次に、モーダル ビュー コントローラーで、モーダル プレゼンテーションを閉じるメソッドで、元のビュー コントローラーで直接 viewDidAppear: を呼び出します。

- (void)doneButtonPressed:(id)sender
{
    [self.delegate viewDidAppear:NO];
    [self.delegate dismissModalViewControllerAnimated:YES];
}
于 2013-02-24T22:18:03.683 に答える