modalview 关闭后 TableView 未重新加载

Posted

技术标签:

【中文标题】modalview 关闭后 TableView 未重新加载【英文标题】:TableView not reloading after modalview dismissed 【发布时间】:2012-01-29 06:10:34 【问题描述】:

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

ModalView 设置为第一页的代表。我可以很好地调用委托方法并传递列表,但是当模态视图被关闭时,表不会用数据重新加载表视图。如果我再次运行该项目,它会立即在表格视图中加载列表。

这里是第一页的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 中,我使用同步和异步请求来访问服务器以获取所需信息。然后我创建列表并将其传递回第一页。

一旦建立连接并且我们在列表上做一些工作,我们就会将它保存到包中。

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];

一旦我得到列表,我将其归档,然后将其读回。如果列表中有信息,我将调用委托方法。

更新

这里是委托方法

- (void)passUserInfo: (NSMutableArray *)employeeDataArray

    employeeData = [[NSMutableArray alloc] initWithArray:employeeDataArray];
    [self.tableView reloadData];

    /////FIX////////
    [createIndexedArray];

一旦被调用,什么都不会发生。我尝试关闭有效的模态视图,但是第一页没有刷新,我的应用程序被遗忘了。我只是对它的进展以及如何刷新第一页上的表格视图感到困惑。

有没有我遗漏的步骤?我已经尝试跟踪它并在此步骤之后将其丢失。

【问题讨论】:

粘贴模式视图关闭时调用的方法。 @h2c03 我刚刚添加了委托方法 您已经注释掉了 [self.tableView reloadData] - 取消注释它可能会很有用 ;) 现在评论的,那是来自测试的 我用丢失的代码更新了我的方法,并在下面解释了我的答案。 【参考方案1】:

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

更新

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

【讨论】:

以上是关于modalview 关闭后 TableView 未重新加载的主要内容,如果未能解决你的问题,请参考以下文章

TableView 项目未显示[关闭]

Dismiss ModalView 在这里不起作用

UICollectionView reloadData 中的错误

关闭 UIViewController 后如何重新加载 tableView

关闭uisplitviewcontroller中的NavigationController后如何重新加载tableView?

关闭后查看一个子视图有不同的地方