【发布时间】:2012-06-18 10:37:47
【问题描述】:
是否可以在 didFinishWithResult 中呈现 Modal 视图控制器?
我有一个 iPad 应用程序,它有 3 个视图 Home、Start 和 Login。可以使用主页视图中的开始和登录按钮启动开始和登录模式视图。
如果单击登录按钮,在登录视图中成功登录操作 (didFinishWithResult) 后,我可以关闭登录视图,但无法启动开始视图。但控件仍保留在主视图上。
对于上述情况,我没有收到任何错误。
Appdeligate.m:
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
HomeViewController * homeview=[[HomeViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:homeview];
self.rootViewController = navigationController;
[navigationController setNavigationBarHidden:YES];
self.rootViewController.view.frame = [[UIScreen mainScreen] applicationFrame];
[self.window addSubview:self.rootViewController.view];
[window makeKeyAndVisible];
下面是home view中展示登录模式视图的方法
呈现登录模式视图
LoginViewController * vc1 = [LoginViewController loginViewControllerWithNavBar:YES];
vc1.boxLoginDelegate = self;
[self presentModalViewController:vc1 animated:YES];
注意:LoginVeiwController 是 Modal 视图控制器 通过 HomeViewController。启动/呈现另一种模式是否正确 通过关闭 LoginVeiwController 查看控制器(启动控制器) 如下。因为每当 LoginVeiwController 关闭时,控件都会留在 HomeVeiwContrller 而不是启动/呈现 StartViewController:
主页视图:
以下是主视图中的方法,它将在成功登录时关闭登录视图并尝试启动开始视图。
- (void)loginViewController:(LoginViewController *)loginViewController didFinishWithResult:(LoginResult)result {
[self dismissModalViewControllerAnimated:YES];
startview = [[[startViewController alloc] init] autorelease];
[self.navigationController setNavigationBarHidden:YES];
[self presentModalViewController:startview animated:YES];
}
如果我在单击按钮时直接显示 StartView,它会很好地启动,但不会在 didFinishWithResult 上
【问题讨论】:
-
- (void)loginViewController:(LoginViewController *)loginViewController didFinishWithResult:(LoginResult)result似乎是一个委托方法。你是它的代表吗? -
这并没有回答我的第二个问题。你是这个方法调用者的代表吗?
-
是的,它是调用者方法的委托
标签: iphone objective-c ios ipad