adi*_*dit 1 iphone objective-c ipad modalviewcontroller
所以我有一个UITabBarController应用程序,我想显示一个登录页面,所以我做了:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDidLogin:) name:UserDidLoginNotification object:nil];
LoginViewController* loginViewController = [[LoginViewController alloc] init];
self.tabBarController.selectedViewController = [self.tabBarController.viewControllers objectAtIndex:0];
[self.tabBarController.selectedViewController presentModalViewController:loginViewController animated:NO];
[loginViewController release];
Run Code Online (Sandbox Code Playgroud)
在我的LoginViewController里面,我还可以显示另一个modalViewController:
- (void) twitterLogin: (UIViewController *) askingView
{
UIViewController *controller = [SA_OAuthTwitterController controllerToEnterCredentialsWithTwitterEngine: _twitter delegate: self];
if (controller) {
self.askingView = askingView;
[askingView presentModalViewController: controller animated: YES];
}
}
Run Code Online (Sandbox Code Playgroud)
我有以下方法,其中askView是LoginViewController,当我想解雇这个我做:
[self.askingView dismissModalViewControllerAnimated:YES];
[[NSNotificationCenter defaultCenter] postNotificationName:UserDidLoginNotification object:nil];
Run Code Online (Sandbox Code Playgroud)
但是,这并没有忽略LoginViewController并显示UITabBarController视图..它只是解除了我从LoginvVIewController显示的modalViewController.我在这做错了什么?我也收到以下错误:
attempt to dismiss modal view controller whose view does not currently appear. self = <LoginViewController: 0x2aff70> modalViewController = <SA_OAuthTwitterController: 0x2d2a80>
2011-09-16 09:45:37.750 VoteBooth[4614:707] attempt to dismiss modal view controller whose view does not currently appear. self = <MainViewController: 0x29fec0> modalViewController = <LoginViewController: 0x2aff70>
Run Code Online (Sandbox Code Playgroud)
sup*_*ssi 13
为了消除在另一个模态视图上显示的模态视图,您必须调用dismissModalViewControllerAnimated:父视图的父视图.我已经在我的一些应用程序中使用了它,它对我来说非常漂亮(经过多次艰苦的努力试图解决它).这正是我用过的:
[[[self parentViewController] parentViewController] dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
if ([self respondsToSelector:@selector(presentingViewController)]) {
[self.presentingViewController.presentingViewController dismissModalViewControllerAnimated:YES]; // for IOS 5+
} else {
[self.parentViewController.parentViewController dismissModalViewControllerAnimated:YES]; // for pre IOS 5
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9288 次 |
| 最近记录: |