Here is the most reliable answer I have found. The problem was solved after the attempt. Share to everyone. http://blog.csdn.net/sbvfhp/article/details/19826221
When I want to jump from one VC to another VC,
Generally used-(void) Presentviewcontroller: (Uiviewcontroller *) viewcontrollertopresent animated: (BOOL) flag Completion: (void (^) (void)) completion; Of course, you can also use navigation push.
But yesterday met the topic of warning, in StackOverflow found the answer: Click to open the link
The main idea is that page jumps must be done after Viewdidload and viewdidappear. The solution is to make sure that the page jumps after view load is complete. The great God said that can be achieved by setting the delay, through the experiment I think this bad control, in the end need to delay how much?
Later, a plan was changed to use the Viewdidload
[selfperformselectoronmainthread:@selector(login) withobject:nilWaituntildone :NO];
Write the page jump code into the function, and then set the Waituntildone to No, that is, viewdidload directly returned without login execution. This makes sure that the page jumps in login are executed after viewdidload.
Warning:attempt to present xxx on XXX whose view are not in the window hierarchy! solution