登录后我有登录屏幕我推送到HomeViewController。在HomeViewController上我有一个按钮“设置”按下我正在呈现“SettingViewController”,现在在setupViewController上我有按钮用于注销。 现在,当用户按logout时,它应该在LoginScreen上popToRootViewController.ie,但它没有完成。有什么建议。 这是我的代码。
登录
-(void)login_Success
{
HomeViewController *homeView = [[HomeViewController alloc]init];
[[self navigationController]pushViewController:homeView animated:YES];
}
在主页演示设置屏幕上
- (IBAction)btn_setting_Click:(id)sender
{
SettingsViewController *settingsViewController = [[SettingsViewController alloc]init];
[self presentModalViewController:settingsViewController animated:YES];
}
按下设置屏幕loggout
- (IBAction)btnLogout_Click:(id)sender
{
[appDelegate closeSession];
[self dismissModalViewControllerAnimated:NO];
[[[self parentViewController]navigationController] popToRootViewControllerAnimated:YES];
}
按下注销时,这不会弹出登录屏幕。任何建议。
答案 0 :(得分:4)
首先在AppDelegate中定义方法,如下所示:
-(void)logoutNav
{
[self.navigationController popToRootViewControllerAnimated:YES];
}
然后尝试在SettingViewController
下面的代码- (IBAction)btnLogout_Click:(id)sender
{
[self dismissModalViewControllerAnimated:NO];
[((AppDelegate *)[[UIApplication sharedApplication] delegate]) logoutNav];
}
答案 1 :(得分:0)
您已在两者之间展示了视图控制器。所以在下一个视图中弹出将无法使用。甚至不是rootViewController。
您需要关闭视图,然后弹出上一个视图
享受编程!!
答案 2 :(得分:0)
- (IBAction)btnLogout_Click:(id)sender
{
[appDelegate closeSession];
[self dismissModalViewControllerAnimated:NO];
[[self.view.window.homeView navigationController] popToRootViewControllerAnimated:YES];
}
我不确定但是试试这个
修改强>
使用委托尝试像这样实现这个
SettingViewController.h
@protocol SettingsViewControllerDelegate
-(void)logOut;
@end
...
@property(nonatomic, assign) id<SettingsViewControllerDelegate> delegate;
SettingViewController.m
@synthesize @delegate;
- (IBAction)btnLogout_Click:(id)sender
{
[appDelegate closeSession];
[self dismissModalViewControllerAnimated:NO];
[self.delegate logOut];
}
HomeViewController.h
#import "SettingViewController.h"
@interface HomeViewController : UIViewController <SettingsViewControllerDelegate>
HomeViewController.m
- (IBAction)btn_setting_Click:(id)sender
{
SettingsViewController *settingsViewController = [[SettingsViewController alloc]init];
settingsViewController.delegate = self
[self presentModalViewController:settingsViewController animated:YES];
}
-(void)logout
{
[[self navigationController] popToRootViewControllerAnimated:YES];
}