2010-06-04 74 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