Unbalanced calls to begin/end appearance transitions for

后端 未结 22 1858
长情又很酷
长情又很酷 2020-11-28 19:23

I read SO about another user encountering similar error, but this error is in different case.

I received this message when I added a View Controller initially:

相关标签:
22条回答
  • 2020-11-28 20:06

    I had this problem when I had navigated from root TVC to TVC A then to TVC B. After tapping the "load" button in TVC B I wanted to jump straight back to the root TVC (no need to revisit TVC A so why do it). I had:

    //Pop child from the nav controller
    [self.navigationController popViewControllerAnimated:YES];
    //Pop self to return to root
    [self.navigationController popViewControllerAnimated:YES];
    

    ...which gave the error "Unbalanced calls to begin/end etc". The following fixed the error, but no animation:

    //Pop child from the nav controller
    [self.navigationController popViewControllerAnimated:NO];
    //Then pop self to return to root
    [self.navigationController popViewControllerAnimated:NO];
    

    This was my final solution, no error and still animated:

    //Pop child from the nav controller
    [self.navigationController popViewControllerAnimated:NO];
    //Then pop self to return to root, only works if first pop above is *not* animated
    [self.navigationController popViewControllerAnimated:YES];
    
    0 讨论(0)
  • 2020-11-28 20:08

    I solved it by writing

    [self.navigationController presentViewController:viewController 
                                            animated:TRUE 
                                          completion:NULL];
    
    0 讨论(0)
  • 2020-11-28 20:10

    I had this problem with a third party code. Someone forgot to set the super inside of viewWillAppear and viewWillDisappear in a custom TabBarController class.

    - (void) viewWillAppear:(BOOL)animated {
    
        [super viewWillAppear:animated];
        // code...
    }
    
    or
    
    - (void) viewWillDisappear:(BOOL)animated {
    
        [super viewWillDisappear:animated];
        // code...
    }
    
    0 讨论(0)
  • 2020-11-28 20:10

    I had the same error. I have a tab bar with 3 items and I was unconsciously trying to call the root view controller of item 1 in the item 2 of my tab bar using performSegueWithIdentifier.

    What happens is that it calls the view controller and goes back to the root view controller of item 2 after a few seconds and logs that error.

    Apparently, you cannot call the root view controller of an item to another item.

    So instead of performSegueWithIdentifier

    I used [self.parentViewController.tabBarController setSelectedIndex:0];

    Hope this helps someone.

    0 讨论(0)
  • 2020-11-28 20:11

    I had this problem because of a typo:

    override func viewDidAppear(animated: Bool) {
        super.viewWillAppear(animated)
    

    instead of

    override func viewDidAppear(animated: Bool) {
        super.viewDidAppear(animated)
    

    It was calling "WillAppear" in the super instead of "DidAppear"

    0 讨论(0)
  • 2020-11-28 20:12

    In Swift 2+ for me works:

    I have UITabBarViewController in storyboard and I had selectedIndex property like this:

    But I delete it, and add in my viewDidLoad method of my initial class, like this:

    override func viewDidLoad() {
       super.viewDidLoad()
       self.tabBarController?.selectedIndex = 2
    }
    

    I hope I can help someone.

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