iOS: isMovingToParentViewController is not working as expected
A simple solution is by adding a flag on viewWillDisappear
setting it to YES if the VC1 has been disappeared. Else the view has never been disappeared so it is the first push (RootViewController
of Navigation Controller
).
Example Code
BOOL hasDisappeared;
-(void)viewWillAppear:(BOOL)animated
{
if (hasDisappeared==YES) {
//VC2 has been popped
}
else
{
//VC1 is the rootViewController
}
}
-(void)viewWillDisappear:(BOOL)animated
{
//Pushing to VC2
hasDisappeared=YES;
}
Unfortunately, isMovingToParentViewController isn't true for the root view controller, so I usually handle this situation with a BOOL,
@implementation ViewController {
BOOL isFirstAppearance;
}
- (void)viewDidLoad
{
[super viewDidLoad];
isFirstAppearance = YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
if (isFirstAppearance) {
NSLog(@"root view controller is moving to parent");
isFirstAppearance = NO;
}else{
NSLog(@"root view controller, not moving to parent");
}
}