1

firstviewcontrollerは を提示しmodalviewcontroller、次にアクションを通じて、アラートを表示して を却下するメソッドを呼び出しますmodalviewが、それが消えると、viewWillAppear は呼び出されません:

最初のviewcontroller

-(IBAction)AddActivity:(id)sender{


    CreateActivity *addViewController = [[CreateActivity alloc] initWithNibName:@"CreateActivity" bundle:nil];

    addViewController.delegate = self;
    addViewController.modalPresentationStyle = UIModalPresentationFormSheet;

    addViewController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

    [self presentModalViewController:addViewController animated:YES];


    addViewController.view.superview.frame = CGRectMake(50, 260, 680, 624);

}
//in secondviewcontroller I use an alert view that call this method in order to dismiss modalview

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if (buttonIndex == 0){


        if ([self respondsToSelector:@selector(presentingViewController)]){
            [self.presentingViewController dismissModalViewControllerAnimated:YES];
        }
        else {
            [self.parentViewController dismissModalViewControllerAnimated:YES];
        }
    }
}

無くなっviewWillAppearたら、呼ばれない、足りないものでお願いします

4

2 に答える 2

6

以下のコードを変更すると機能します。

 addViewController.modalPresentationStyle = UIModalPresentationFullScreen;

それが動作します。

于 2017-01-05T06:43:12.360 に答える
-2

問題は、ビューが消えるときに viewWillAppear が呼び出されないことです。あなたが探しているメソッドはviewWillDisappearです。

追加の説明については、以下を参照してください。

– viewWillAppear: ビューが表示される直前に呼び出されます。

– viewDidAppear: ビューが表示された (画面に表示された) ときに呼び出されます。

– viewWillDisappear: ビューが消える直前に呼び出されます。

– viewDidDisappear: ビューが消えた (画面に表示されていない) ときに呼び出されます。

また、コードが次のように適切に記述されていることを確認してください。

- void)viewWillAppear:(BOOL)animated {
    // work your magic here
}

-(void)viewWillDisappear:(BOOL)animated {
    // work your magic here
}
于 2013-08-05T17:02:47.710 に答える