2011-08-21 68 views
0

显示我有一个UIViewController用这种方法:presentModalViewController不从独立的UIViewController

-(void)prepareToShowVault { 

... 

UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeViewController]; 
     [self.navigationController presentModalViewController:passcodeNavigationController animated:YES]; 
     [passcodeViewController release]; 
     [passcodeNavigationController release]; 
} 

当从这个UIViewController中的另一种方法调用,它工作得很好。但是当从另一个UIViewController调用时,这个方法会触发,但代码不会显示一个新的modalViewController,大概是因为具有上述方法的UIViewController不是活动的。我怎样才能做这项工作?

回答

1

UIViewController文档它说

modalViewController

为有效的模态控制器视图,也就是说,其对由接收器所管理的视图的顶部暂时显示的视图。 (只读)

所以我猜测,除非你的视图控制器是活动的,否则你将看不到它所呈现的模态视图。

因此,您需要在该视图控制器中,或将该方法添加到其他视图控制器,以及可能使用您添加到两者的类别。

-1

你为什么要推导航控制器?导航控制器已经存在。不要创建导航控制器。我想你应该仅仅是doing-

[self.navigationController presentModalViewController:passcodeViewController animated:YES]; 

HTH,

阿克沙伊