2011-04-06 66 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]; 
} 

你会设置委托当您创建的登录视图控制器,并将其呈现给用户。