如何从呈现的ViewController poptoRootViewController

时间:2013-03-09 05:38:31

标签: iphone objective-c

登录后我有登录屏幕我推送到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];
 }

按下注销时,这不会弹出登录屏幕。任何建议。

3 个答案:

答案 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];
}