如图,先简单介绍一下控制器直接的结构:
tabBarViewController中包含4个navigationController,每个navigationController各自拥有自己的rootViewcontroller,当让其中任意一个rootViewcontroller present 一个控制器再dismiss 返回到tabBarViewController所在的页面后就会发生子控制器view的位移:
困扰了很久,终于在找到了答案,原来我在重写tabBarViewController 的 viewWillAppear方法的时候并没有调用[super viewWillAppear];方法,所以会导致出现上面的问题.
还有发现
1.tabBarViewController的子控制器在使用push和pop的时候 只有两个子控制器的viewWillAppear和viewWillDisappear方法会被调用,并不会调用tabBarViewController的viewWillAppear和viewWillDisappear方法;
2.tabBarViewController的子控制器在使用present和dismiss的时候除了两个子控制器的viewWillAppear和viewWillDisappear方法会被调用外,tabBarViewController的viewWillAppear和viewWillDisappear方法也会被调用,并且会比调用present的那个子控制器先调用这两个方法;