在我的应用程序中,我有以下代码,第一部分在我的应用程序启动时运行,并在模态视图中显示登录屏幕。在此之前将我的 rootController 添加到窗口。
Modal View 将允许用户登录、查看条款和条件,然后如果他们接受则调用 loadMainApp 函数。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
rootController.delegate = self;
[window addSubview:rootController.view];
LoginViewController *_loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
self.loginViewController = _loginViewController;
[_loginViewController release];
UINavigationController *navi = [[[UINavigationController alloc]initWithRootViewController:loginViewController]autorelease];
navi.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[loginViewController release];
[rootController presentModalViewController:navi animated:YES];
[self.window makeKeyAndVisible];
return YES;
}
当用户接受条款和条件时调用下一位:
-(void)loadMainApp:(UIView *)fromView{
[fromView removeFromSuperview];
[window addSubview:rootController.view];
rootController.selectedIndex = 2;
rootController.delegate = self;
}
从这里我希望能够使用人员选择器,这是一个模态视图,我尝试使用以下代码:
ABPeoplePickerNavigationController *picker =
[[ABPeoplePickerNavigationController alloc]init];
picker.peoplePickerDelegate = self;
[rootController presentModalViewController:picker animated:YES];
[picker release];
但是没有任何反应,当我尝试从我的 rootController 中呈现模态视图时,没有任何显示。
这似乎发生在 applicationDidFinishLaunching 中的这段代码运行之后:
LoginViewController *_loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginView" bundle:[NSBundle mainBundle]];
self.loginViewController = _loginViewController;
[_loginViewController release];
UINavigationController *navi = [[[UINavigationController alloc]initWithRootViewController:loginViewController]autorelease];
navi.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[loginViewController release];
[rootController presentModalViewController:navi animated:YES];
[self.window makeKeyAndVisible];
return YES;
如果我根本不显示登录屏幕,而只是添加我的 rootController
rootController.delegate = self;
[window addSubview:rootController.view];
在 applicationDidFinishLaunching 函数中,当我去显示人员选择器时一切正常。
我在这里打破了一些基本的东西,或者任何人都可以发现我可能做错了什么吗?
最佳答案
您是否通过 dismissModalViewControllerAnimated:
方法正确关闭了第一个模态视图 Controller ?如果您只是从其父 View 中删除模态视图 Controller 的 View ,那么 UIKit 可能会遗留大量文书工作。
关于iphone - 将 subview 添加到窗口后无法推送模态视图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5982005/