在modalview解雇后,TableView无法重新加载

时间:2012-01-29 06:10:35

标签: ios4 uitableview modalviewcontroller

我有一个页面,检查捆绑包上是否有员工列表,如果有,则在表格视图中显示它们。但是如果捆绑包上没有列表,它会抛出一个模态视图控制器。然后需要有人登录,登录验证然后下载数据。

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。

我缺少一步吗?我已经尝试跟踪它并在此步骤后失去它。

1 个答案:

答案 0 :(得分:1)

我实际上发现我的代码设置正确,我只需要调用一个将数组排序为字母数组的方法。一旦我从委托方法调用该方法,它就像蛇的魅力一样。

<强>更新

我有一个创建索引数组的方法。当我在委托方法中调用它时,它重新加载页面并将新插入到表视图中。我很确定它一直在重新加载,我只是没有调用填充正在tableview中显示的数组的方法。