2011-04-06 72 views
0

這一次經過長達有點複雜〜登錄屏幕+表視圖中的一個選項卡控制器=沒有顯示初始登錄

明白了驗證,從異地服務器的用戶名/口令的登錄頁面。服務器返回一個用戶ID,然後在我的應用程序中使用它來查找匹配的plist文件。如果還沒有一個,它應該爲樣本數據爲該用戶創建一個新的plist。這一切工作,但沒有任何顯示,除非我終止,然後重新啓動應用程序。

我認爲問題是tableview與模態登錄頁面同時加載。

下面是我的登錄頁面代碼:

-(void)connectionDidFinishLoading:(NSURLConnection *)connection{ 
[fIndicator stopAnimating]; 
    //convert data from server to a string 
NSString *xmlReturn = [[NSString alloc] initWithData:xmlData encoding:NSUTF8StringEncoding]; 
    //notify user if username/pass failed 
if ([xmlReturn isEqualToString:@"0"] ||[xmlReturn isEqualToString:@"No"]) { 
    UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Login Fail" message:nil delegate:nil cancelButtonTitle:@"Retry" otherButtonTitles:nil]; 
    [alert show]; 
    [alert release]; 
} 
    //if server authenticates username/pass 
else { 

    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
      //set user ID from server into Defaults for app use 
    [defaults setObject:xmlReturn forKey:@"AppPref_UI"]; 
    [defaults synchronize]; 
      //this is where I think the tableview needs to be told to reload 
      //but no idea how to reference that view controller from 
      //this modal view controller 
    [??? reloadData]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
[xmlReturn release]; 

}

+0

它將有助於獲得更多有關您的視圖層次結構的信息。 – 2011-04-06 22:08:47

+0

該應用程序的主要部分使用帶有2個視圖的選項卡視圖控制器:(A)具有表格視圖的Nav控制器,可深入到詳細的視圖和(B)顯示用戶信息的簡單視圖。如果用戶第一次登錄或已從應用程序註銷,則登錄頁面將從導航控制器以模態方式調用。 – Jalakoo 2011-04-06 22:13:27

+0

好的,解決了,感覺不那麼聰明。如果其他人碰巧遇到這個完全相同的問題,這裏是我的解決方案:替換「[??? reloadData];」 (你的函數或代碼來創建一個新的plist文件)。我的功能是「[腳本aCheckforSavedScripts];」如果沒有看到我爲此構建的全部課程和功能,這是沒有意義的,但它應該讓你知道要走向何方。無論如何,如果在這裏生成新的plist,當登錄模式視圖消失時,tableview將自動更新。 – Jalakoo 2011-04-06 22:56:18

回答

0

你會使用委託設計模式。登錄對話框會在委託完成後通知它。

@property (nonatomic, assign) id <YourProtocol> delegate; 

if ([self.delegate respondsToSelector:@selector(loginCompleted:)]) { 
    [self.delegate loginCompleted:self]; 
} 

你會設置委託當您創建的登錄視圖控制器,並將其呈現給用戶。