2014-01-06 53 views
2

第一次VC1到VC2 [self.navigationController pushViewController:mainView动画:YES]工作正常。从VC2到VC3在ios7中不起作用。pushviewcontroller不工作在ios7

VC1-> VC2(工作正常)

- (IBAction)loginBtnAction:(id)sender 
{ 

    GVMainViewController *mainView; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
     mainView = [[GVMainViewController alloc] initWithNibName:@"GVMainViewController_iPhone" bundle:nil]; 
    } else 
    { 
     mainView = [[GVMainViewController alloc] initWithNibName:@"GVMainViewController_iPad" bundle:nil] ; 
    } 

    [self.navigationController pushViewController:mainView animated:YES]; 
} 

VC2-> VC3(不工作)

- (IBAction)doneButtonAction:(id)sender 
{ 
    [[FinishViewController getsharedInstance]updateProfileInfo]; 
    [self performSelector:@selector(moveTo) withObject:nil afterDelay:0.5]; 

} 

- (void)moveTo 
{ 
    GVMainViewController *mainView; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
     mainView = [[GVMainViewController alloc] initWithNibName:@"GVMainViewController_iPhone" bundle:nil]; 

    } else 
    { 
     mainView = [[GVMainViewController alloc] initWithNibName:@"GVMainViewController_iPad" bundle:nil] ; 
    } 

    [self.navigationController pushViewController:mainView animated:YES]; 
} 

,也得到一些日志整理了意外状态导航过渡。导航栏子视图树可能会损坏。在所有的iOS版本中,但在ios7中它并没有推动视图控制器。

请任何人告诉我清楚的iOS7和更低版本的解决方案。提前致谢。

+0

在iOS7中,您无法将新的视图控制器推入导航堆栈,直到完成上一个动画。 – holex

回答

4

mainView应该作为performSelector启动后台线程在主线程上推送。

- (void)moveTo 
{ 
    GVMainViewController *mainView; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
    { 
     mainView = [[GVMainViewController alloc] initWithNibName:@"GVMainViewController_iPhone" bundle:nil]; 

    } 
    else 
    { 
     mainView = [[GVMainViewController alloc] initWithNibName:@"GVMainViewController_iPad" bundle:nil] ; 
    } 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self.navigationController pushViewController:mainView animated:YES]; 
    }); 
} 
+0

Apple对'-performSelector:withObject:afterDelay:'有不同的看法:_This方法设置了一个计时器来执行**当前**线程的运行循环_...上的'aSelector'消息。 – holex

相关问题