我有一个页面,检查捆绑包上是否有员工列表,如果有,则在表格视图中显示它们。但是如果捆绑包上没有列表,它会抛出一个模态视图控制器。然后需要有人登录,登录验证然后下载数据。
ModalView设置为第一页的委托。我可以很好地调用委托方法并传递列表,但是当ModalView被解除时,表不会重新加载带有数据的tableview。如果我再次运行该项目,它会立即在表视图中加载列表。
以下是第一页的ViewDidLoad上的方法
[self checkLastLoginDate];
[self loadDataIntoArray];
if (currentData && dataLoadedIntoArray) {
NSLog(@"sweet the data is current");
[self createIndexedArray];
}
else{
NSLog(@"Data not loaded and not current");
//push login view
///if ipad do this
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
//the above code was working fine. I am just testing pushing a dynamic xib
LoginViewControlleriPad *loginControlleriPad = [[LoginViewControlleriPad alloc] initWithNibName:@"LoginViewControlleripad" bundle:nil];
loginControlleriPad.modalPresentationStyle = UIModalPresentationFormSheet;
loginControlleriPad.delegate = self;
[self presentModalViewController:loginControlleriPad animated:YES];
[self createIndexedArray];
[loginControlleriPad dismissModalViewControllerAnimated:NO];
[self.tableView reloadData];
}
前两种方法检查以确保数据包上存在数据,并且上次登录日期在15天内。
如果是,那么我创建一个IndexedArray并且它显示得很好。
如果数据不在捆绑包上或者日期是旧的,我检查设备并使用模态视图。委托已设置,ModalView出现。
在ModalView中,我使用syncronus和asyncronus请求命中服务器以获取所需信息。然后我创建列表并将其传递回第一页。
一旦建立连接并且我们在列表上做了一些工作,我们就将其保存到捆绑包中。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:kEMPLOYEE_PLIST];
/////write to file/////
[cleanResults writeToFile:path atomically:YES];
employeeList = [[NSMutableArray alloc ]initWithContentsOfFile:path];
if (employeeList != nil)
{
[delegate passUserInfo:employeeList];
//cant get login view to dismiss
//[self dismissModalViewControllerAnimated:YES];
}
一旦我得到列表,我就把它归档,然后再读回来。如果列表中有信息,我会调用委托方法。
这是delgate方法
- (void)passUserInfo: (NSMutableArray *)employeeDataArray
{
employeeData = [[NSMutableArray alloc] initWithArray:employeeDataArray];
[self.tableView reloadData];
/////FIX////////
[createIndexedArray];
}
一旦被称为没有任何反应。我试图解雇模态视图,这是有效的,但然后第一页不刷新,我的应用程序在遗忘中丢失。我只是感到困惑,如果它正在进行以及如何在第一页上刷新tableview。
我缺少一步吗?我已经尝试跟踪它并在此步骤后失去它。
答案 0 :(得分:1)
我实际上发现我的代码设置正确,我只需要调用一个将数组排序为字母数组的方法。一旦我从委托方法调用该方法,它就像蛇的魅力一样。
<强>更新强>
我有一个创建索引数组的方法。当我在委托方法中调用它时,它重新加载页面并将新插入到表视图中。我很确定它一直在重新加载,我只是没有调用填充正在tableview中显示的数组的方法。