创建一个注销按钮

时间:2015-11-15 04:45:18

标签: ios objective-c xcode

NB:First App;

我目前正在尝试为我创建的应用创建一个注销按钮。本质上,在加载时,用户会看到带有2个文本字段和一个按钮的LoginViewController.xib,假设文本字段符合参数,当按下按钮时,将执行以下参数:

if (success) {
        AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
        [appDelegate.window setRootViewController:appDelegate.tabBarController];
    }

这很好用,用户可以使用在3 xib(主页,设置,表格)之间切换的标签控制器进入应用程序。

在设置标签中,我有一个按钮" LogOut"当按下时,我希望用户返回到" LoginViewController.xib"但我似乎无法通过youtube或网络上的教程找到任何方法。

请参阅下面的设置编码;

SettingsViewController.h:

#import <UIKit/UIKit.h>

@interface SettingsViewController : UIViewController

- (IBAction)LogOutClick:(id)sender;

@end

SettingsViewController.m:

#import "SettingsViewController.h"

@interface SettingsViewController ()

@end

@implementation SettingsViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (IBAction)LogOutClick:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

@end

1 个答案:

答案 0 :(得分:1)

调用dismissViewControllerAnimated:不会有任何帮助,因为任何视图控制器都没有显示标签栏控制器/设置视图控制器。从我提供的代码中可以看出,原始登录控制器不再存在于内存中,因此您无法“返回”它。

您有两个选择:一个是在标签栏控制器上显示登录视图控制器,另一个是将窗口的根视图控制器更改为登录控制器。例如

//Present over tab bar
- (IBAction)LogOutClick:(id)sender {
    LoginViewController *loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    [self presentViewController:loginController animated:YES completion:nil];
}

//Switch root view controller
- (IBAction)LogOutClick:(id)sender {
    LoginViewController *loginController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
    [appDelegate.window setRootViewController:loginController];
}

在我看来,第一种方法是更好的做事方式。登录控制器被解除后,您可以使用正确的数据填充选项卡栏控制器的视图。但是,由于登录控制器已经有一个切换窗口的根视图控制器的方法,因此您可以更容易地将根视图控制器切换回登录控制器。