dismissViewControllerAnimated does not work within a block

前端 未结 4 728
野趣味
野趣味 2021-01-02 04:36

I try to close a UIViewController after an UIAlertController has been shown.

This is my code:

UIAlertController *alertContr         


        
相关标签:
4条回答
  • 2021-01-02 04:51

    Just use [super.navigationController popViewControllerAnimated:YES];

    0 讨论(0)
  • 2021-01-02 04:53

    [self dismissViewControllerAnimated:YES completion:nil] will close any view controllers that the currently displaying view (i.e., "self") is displaying. What you want to do is run this same method on the presenting view controller for "self". I.e.

    [self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
    
    0 讨论(0)
  • 2021-01-02 04:55

    Have you checked on which thread the block is being called on? If it's not thread 1, then it won't dismiss your view properly, as UI manipulation can only be done on thread one. Try creating a method for dismissing and then calling it on the main thread:

        ...handler {
         [self performSelectorOnMainThread:@selector(dismissModalView) withObject:nil waitUntilDone:NO];
    }];
    
    -(void)dismissModalView {
         [self dismissViewControllerAnimated:YES completion:nil];
    }
    
    0 讨论(0)
  • 2021-01-02 05:09

    In case someone is having the same issue. I pushed the UIViewController, I didn't present it with presentViewController:animated:completion:. That's why [self.navigationController popViewControllerAnimated:YES]; should be used instead.

    The strange thing is that [self dismissViewControllerAnimated:YES completion:nil]; worked outside of the block and didn't inside, I have no explanation for this...

    0 讨论(0)
提交回复
热议问题