在 tableView 中重新加载数据的问题

Posted

技术标签:

【中文标题】在 tableView 中重新加载数据的问题【英文标题】:Problems reloading data in a tableView 【发布时间】:2014-04-23 15:04:23 【问题描述】:

我正在尝试根据用户登录时的帐户权限在表格视图中重新加载数据。

其中涉及的两个类是:

mainViewControllermenuViewController

目前我可以使用

[self.tableView reloadData];

viewWillAppear 方法中调用时重新加载数据。这对我没有好处,因为在加载视图时用户尚未登录,因此此时没有数据可以填充表格。

我在 menuViewController.h 中创建了一个名为 populateTable 的方法,我在按下按钮时在 mainViewController.m 文件中调用该方法;

(IBAction)Reload:(id)sender  
menuViewController *mvc = [[menuViewController alloc]init];
[mvc populateTable];

这似乎工作正常,因为我在执行的 populateTable 方法中有一个 NSLog。但是 reloadData 不起作用。

这是我的 populateTable 方法;

-(void)populateTable 
self.section1 = [NSMutableArray arrayWithObjects:@"test settings", @"test",           @"test",@"Users and access",@"No-track IPs", nil];
self.section2 = [NSMutableArray arrayWithObjects:@"Rules",     @"Channels",@"Goals",@"Pages", nil];
self.menu = [NSMutableArray arrayWithObjects:self.section1, self.section2, nil];
[self.tableView reloadData];
NSLog(@"Reloading data");

你们能帮帮我吗,我一直盯着这个看了一天,无处可去,谢谢!

【问题讨论】:

所以你的 tableview 在 menuViewController 中? menuViewController 的视图在什么时候添加到视图层次结构中? 【参考方案1】:

根据我的经验,这可能是时间问题 - 当您在其上调用 reloadData 时,self.tableViewIBOutlet 尚未准备好(添加 NSLog 并亲自查看 - 调用时为 nil) .

要解决这个问题,必须在 UIViewController 的 viewDidLoad 方法中调用 populateTable 方法。这保证了 outlet 不为零,并且一切都为您的数据填充做好了准备。

此外,您不应使用 [[MenuViewController alloc] init] 实例化您的 MenuViewController,而应使用情节提要的 instantiateViewControllerWithIdentifier

【讨论】:

对我的问题进行了排序,我很愚蠢,我更改了 menuViewController mvc = [[menuViewController alloc]init];到 menuViewController *mvc = (menuViewController) self.slidingViewController.underLeftViewController;感谢您的帮助!【参考方案2】:

你的问题是这一行,

menuViewController *mvc = [[menuViewController alloc]init];

这会创建一个新的 menuViewController 实例,而不是您在屏幕上看到的那个。您需要获得对现有的引用,而不是创建新的引用。如何获得该引用取决于创建控制器的方式、时间和地点。

【讨论】:

以上是关于在 tableView 中重新加载数据的问题的主要内容,如果未能解决你的问题,请参考以下文章

Swift:在警报视图中按下按钮后,tableView 不会重新加载数据

未在 TableView 中重新加载正确的数据

重新加载数据后,我可以在我的 tableView 中保持相同的位置吗?

重新加载数据时 Tableview 崩溃

更改数组后无法在 Tableview 中重新加载数据?

更改数据和 popViewController 后 TableView 不会重新加载