2010-06-04 23 views
0

我有一个Tabbar/Tableview应用程序,当应用程序加载时模式加载登录/注册视图,我已经在设置包中设置了Root.plist名称和密码并成功检索了这些项目。我想能够做两件事:在NSUserDefaults中验证名称和密码的存在以跳过登录/屏幕

1)做一个测试,看看NSUserDefault字符串是否为空,如果是的话加载登录/注册视图。

2)如果字符串可用,则使用字符串内容登录到我的Web服务。

在此先感谢。

这里是我的LoginViewController .M:

@synthesize usernameField; 
@synthesize passwordField; 
@synthesize loginButton; 
@synthesize loginIndicator; 
@synthesize usernameLabel; 
@synthesize passwordLabel; 





-(void)refreshFields { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    usernameLabel.text = [defaults objectForKey:kUsernameKey]; 
    passwordLabel.text = [defaults objectForKey:kPasswordKey]; 

} 
- (void)viewDidAppear:(BOOL)animated { 
    [self refreshFields]; 
    [super viewDidAppear:animated]; 
} 
- (void)viewDidLoad { 
    [super viewDidLoad]; 
    [self refreshFields]; 

[self.navigationController setNavigationBarHidden:YES animated:NO]; 
} 



- (IBAction) login: (id) sender 
{ 

    { 

NSString *post =[NSString stringWithFormat:@"username=%@&password=%@",usernameField.text, passwordField.text];  


    NSString *hostStr = @"http:~iphone_login.php?"; 
    hostStr = [hostStr stringByAppendingString:post]; 
    NSData *dataURL = [NSData dataWithContentsOfURL: [ NSURL URLWithString: hostStr ]];  
    NSString *serverOutput = [[NSString alloc] initWithData:dataURL encoding: NSASCIIStringEncoding]; 

NSLog(@"Site: %@",hostStr); 
NSLog(@"Site: %@",serverOutput);  



if([serverOutput isEqualToString:@"Yes"]){ 


    UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Congrats" message:@"You are authorized " 
                   delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 

     [alertsuccess show]; 
     [alertsuccess release]; 

回答

0

我的用户名和密码不存储直接进入label.text,但是这是你的程序。对于空的检查试试这个:

if ([usernameLabel.text length] == 0 || [passwordLabel.text length] == 0) 
    [self loadLoginView]; 
else 
    [self login:nil]; 

你也可以尝试stringForKey:kUsernameKey而不是objectForKey。最后确保你的用户名和密码不只是空格,现在我假设你在保存到NSUserDefaults之前做了检查。

+0

该测试的工作原理,但我不确定有关命令,[self loadLoginView]加载我的LoginView.xib?我正在寻找它继续加载视图。 [self login]是否运行 - (IBAction)登录名:(id sender?)我得到错误说明“ViewController可能不会对这两个命令作出响应”。 – 2010-06-04 18:59:11

+0

应该是[self login:nil], [self loadLoginView]只是你自己函数的虚拟占位符,它应该加载你的LoginView.xib文件,通常它带有LoginView.m和LoginView.h文件,所以仅仅加载xib文件是不够的。 – JOM 2010-06-07 04:10:42

+0

谢谢,所有这些都在我的LoginView.m类中,LoginView控制器是从AppDelegate.m文件以模态方式启动的。你知道我应该去哪里吗? – 2010-06-07 20:54:01