如何在iOS上的注销按钮上移动到根ViewController?

时间:2014-12-10 07:17:07

标签: ios objective-c uiviewcontroller uinavigationcontroller

我有一个登录页面,一旦我登录它将带我到mkmapview的主页。在左上角我点击一个菜单按钮slideview将打开。这里使用名为SlideNavigationController的库来打开leftview。在左侧视图中,我有一个注销按钮。当我单击注销按钮时,我必须打开我的登录页面。 现在,当我点击退出按钮时,它将滑出并转到主页而不是登录页面。

请在以下图片链接中查看我的项目结构

screen image

这是我目前的代码

- (IBAction)logout:(id)sender 
{
    HomeController *vieww=[[HomeController alloc]init];
    loginController *vie=[[loginController alloc]init];
    [[SlideNavigationController sharedInstance] popToRootAndSwitchToViewController:vie
                                                             withSlideOutAnimation:self.slideOutAnimationEnabled
                                                                     andCompletion:nil];
}

在此将显示这样的屏幕而不是登录屏幕 device screenshot

请帮忙

4 个答案:

答案 0 :(得分:1)

单击“注销操作”

时,尝试使用此命令转到根视图控制器
- (IBAction)logout:(id)sender {
    [self.navigationController popToRootViewControllerAnimated:YES];
}

答案 1 :(得分:0)

您可以使用此代码获取NSArray中的所有ViewControllers,之后您可以使用ObjectAtIndex值返回所需的位置。

 NSArray *viewsArray = [self.navigationController viewControllers];
 UIViewController *chosenView = [viewsArray objectAtIndex:1];//set index where you want to go back
 [self.navigationController popToViewController:chosenView animated:YES];

答案 2 :(得分:0)

将您的LoggedIn详细信息存储在NSUserDefaults

然后检入viewWillAppear

HomeViewController方法

您必须在NSUserDefaults的{​​{1}}上清除Click并需要导航LogOut Button

例如

您正在HomeViewController USER_ID存储NSUserDefaults,如下所示

  

[[NSUserDefaults standardUserDefaults] setValue:@“Your Value”   forKey:@ “USER_ID”];   [[NSUserDefaults standardUserDefaults] synchronize];

现在在LoggedIn HomeViewController方法中进行了以下检查。

viewWillAppear

通过以下内容清除if([[NSUserDefaults standardUserDefaults] objectForKey:@"USER_ID"]){ //User already logged in. }else{ // User is not logged in so need to show login page. } 中的NSUserDefaults

LogOut Button Action

答案 3 :(得分:0)

希望这会对你有所帮助

有很多理由在Appdelegate中编写goToLogin方法

 -(void)goToLogin
    {
        yourLoginViewController *objyourLoginViewController =[[yourLoginViewController alloc]initWithNibName:@"yourLoginViewController" bundle:nil];
        self.objNavigationController =[[UINavigationController alloc]initWithRootViewController:objyourLoginViewController];
        self.window.rootViewController = self.objNavigationController;
    }

- (IBAction)logout:(id)sender 
{

[(AppDelegate *)[UIApplication sharedApplication].delegate) goToLogin];
}