问题标签 [reloaddata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
621 浏览

iphone - iPhone:UITableView reloadData 计时问题

我遇到了一个常见的 TableView 数据重新加载问题。我已经阅读了许多关于同一主题的问题,但问题与我的问题并不完全相同......

我有一个基于导航的应用程序。在 RootViewController 的 viewDidLoad 方法中,我发出请求以获取 JSON 数据(文章)。连接完成加载后,我为每个条目创建自定义文章对象。Article 类有一个 initWithDictionnary 方法,它初始化对象的属性,最重要的是创建一个下载图像的请求。当连接完成加载后,我设置了 Article 对象的图像属性。目标是使用下载的图像初始化 cell.imageView.image 属性。到那时,您可能已经猜到问题所在了。图像在单元格图像被渲染后下载,因此它保持为空,直到重新加载单元格(例如,如果它离开屏幕然后又重新加载)。我想我应该在某个时间调用 reloadData 但我没有 不知道什么时候。理想情况下,我会在所有单元格都已加载但似乎不可能时调用它。我尝试了一堆疯狂的事情,比如等待一个单元格加载并尝试重新加载前一个单元格,但它没有用。通过阅读此处的问答,我了解了 Apple 的 LazyTableImage 示例代码,但我并不了解所有内容,因此我不确定我应该/可以使用它。

如果您需要更多详细信息,请询问我。

提前感谢您的帮助。

0 投票
1 回答
1460 浏览

objective-c - reloadData 同步问题

所以这是我的问题。在我的应用主页中,我有一个简单的 UITableView,它最多可以容纳 3 个部分,2 个部分,每个部分最多 3 个项目,第三个部分最多可以包含 6 个项目。

每个部分都有一个与之关联的标题。

实际内容来自网络,我发出请求,服务器发送数据,我用 NSXMLParser 解析响应,创建数组来保存每个部分的数据(3 个数组),并创建另一个数组来保存我将要引用的部分必须显示。

然后,最后,我调用 [myTableView reloadData] 来刷新内容并重绘表格。用户还可以自己刷新内容。为此,我使用了类似于 Facebook 应用程序的下拉刷新机制。

使用 pull-to-refresh 刷新内容也会调用 [myTableView reloadData]。当我刷新内容并且表格需要更改其布局时,我遇到了严重的崩溃(例如:表格当前包含所有 3 个部分,并且在我 reloadData 后它只会显示一个部分)。

我使用调试器来追踪问题。这是我发现的:

  1. 用户将整个表格拉下 50 像素然后释放
  2. 动画开始使表格“向上”以适应 320x50 视图,显示“正在加载”消息 + 在表格顶部动画的 UIActivityIndi​​catorView
  3. 触发刷新,我在后台任务中发出新的 Web 服务请求,获取新数据,解析,更新数组,最后在主线程上执行 reloadData
  4. 与此同时,虽然刷新正在做所有我注意到 UITableView STILL 发送委托消息到:
    • 表视图:viewForHeaderInSection:
    • 表视图:cellForRowAtIndexPath:

我认为这是因为下拉刷新动画将表格“向上移动”并显示新的单元格/标题,从而调用上述内容。

问题是这会导致可怕的崩溃,因为保存节数据的数组和节数组本身似乎是同时修改的。

发生这种情况时,委托方法可能会在错误的上下文中使用更新/尚未更新的项目/节数组。也就是说,之前

  • numberOfSectionsInTableView:
  • 表视图:numberOfRowsInSection:

有机会为更新的数组正确更新新结构。

我知道没有任何代码示例的故事很长,但我想如果我已经知道问题(至少我希望我知道)并且如果有人看到我的观点,也许有人可以指出我正确的方向来纠正这个同步问题.

谢谢阅读!

稍后编辑

我发现问题出在哪里。我的 pull-to-refresh 机制使用如下所示的 stopLoading 回调:

{ isLoading = NO;

}

在某些时候,我重置了我的表的 contentInset,将其设置为 UIEdgeInsetsZero。这以及在主线程上返回后台刷新后我在 reloadData 之前调用 stopLoading 的事实 - 在错误的时刻触发了错误的委托回调。

所以这是我表的 contentInset 和 reloadData 更改之间的时间问题。

0 投票
1 回答
2136 浏览

ios - [tableView 重载数据]; 在导航回根控制器之前不会重新加载

我和一个朋友正在开发一个购物清单应用程序,但在使用 [tableView reloadData]; 时遇到了一些问题。我们将杂货清单存储在 plist 中,并有一个添加项目子视图。当您离开该子视图返回列表时,即使我们正在更新 plist 并在 viewWillAppear 中调用 reloadData,列表也不包含新项目。它确实有效;如果我们导航回所有列表的主列表,然后返回到我们刚刚添加项目的特定列表,那么这些项目就会显示出来。同样,我们想从列表中删除项目,只需选择行并在项目旁边显示一个复选标记。尽管我们在DidSelectRowatIndExpath中也调用ReloDdata,但该列表不会自动更新行时。再次,如果我们导航回主列表然后返回到单个列表,则会显示更改。我已经检查过了,nib 文件中的委托和数据源已正确链接到文件的所有者。

这是 viewWillAppear 的代码:

和 didSelectRowAtIndexPath:

任何帮助将非常感激!提前致谢!

0 投票
2 回答
1688 浏览

iphone - 如何从自定义 UITableViewCell 调用操作以重新加载 tableView

我有一个简单的问题:我无法"[tableView reloadData]"从.mUIButton中调用。UITableViewCell

我有一个tableView显示每行UITableViewCell包含一个的。UIButton当我单击单元格的按钮时,我想从我的 tableView 中重新加载数据。

0 投票
1 回答
1695 浏览

iphone - 重新加载数据时tableView会崩溃

在我调用方法 getData 之后。我尝试重新加载数据,但它没有重新加载数据。我不知道为什么,但我可以正确获取数据。哦,我在 viewDidAppear 设置了 getData 因为我想快速从上一个视图进入这个视图,用户会看到加载视图,当我完全加载数据时,加载视图将消失,表格视图将出现

这是我的简单代码

.m

。H

我已经链接参考。出口。

它说它在 main.m 崩溃了如何在新数据中设置单元格。

对不起。它只是显示 EXE-BAD-ACCESS 错误

0 投票
2 回答
376 浏览

iphone - 在 iPhone 应用上登录后重新加载数据

我有一个在 mainApp的viewDidLoad上启动的登录。这意味着mainApp 中的numberOfRowsInSection登录之前运行,并导致我的tableview没有被填充。

我在mainAppviewWillAppear中有我的 JsonArray 和 reloadData 函数,以使numberOfRowsInSection登录之后运行。所以我放了:

...在视图中将出现。但这并不能让它在登录后运行。

有什么建议么?

提前致谢。

代码更新

登录页面

主视图

0 投票
2 回答
370 浏览

objective-c - 重新加载 UITableView 时,iOS AccessoryDe​​tail 图像不会更新

我正在加载 UITableView 有时它会有 5 个单元格,有时会有 4 个单元格。根据它将有多少个单元格,我想为第 2 行或第 3 行设置 AccessoryDe​​tail 按钮。我知道条件有效,因为我已经成功尝试过,didSelectRowAtIndexPath:但由于某种原因,TableView 似乎没有更新取决于显示的行数。我正在成功地重新加载 TableView 数据viewWillAppear:[tableView reloadData]但这并不能解决我的 AccessoryDe​​tail 问题。我试过用[tableView reloadInputViews]没用。问题是 AccessoryDe​​tail 图像始终设置为第 2 行或第 3 行,具体取决于我开始从应用程序加载哪个视图。

以下是该cellForRowAtIndexPath:方法的逻辑:

编辑:我已经根据 Simon Lee 的建议用 else 子句改变了我的方法,看起来像这样,但它似乎也不起作用:

0 投票
1 回答
1606 浏览

xcode - Tableview reloadData 没有被执行——有时

我有一个从 2 个不同的地方调用的视图控制器。

1)我从根控制器调用它。它被显示并填充。添加按钮完美运行。我打开一个模态表单,获取信息并通过它的委托将其返回给视图控制器。

但是,当我从另一个视图(在拆分视图的右侧)调用它时,相同的代码不会重新加载表。它添加了数据——如果我离开表单然后回来,数据就在那里,但表格视图没有被刷新。当我单步执行代码时,它得到了这条线,然后像看不到它一样越过它。

0 投票
1 回答
196 浏览

uitableview - UITable 视图不会重新加载

我有一个 UITableView 放在基于视图的应用程序上。它已正确连接,因为我最初可以向它发送数据。问题是清理桌子。我可以清除 NSMutableArray 但数据仍显示在表中。

这是索引路径处的行单元格: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

0 投票
2 回答
1970 浏览

cocoa-touch - 为什么我不能同时在 viewWillAppear:animated 中调用 reloadData 和 deselectRowAtIndexPath ?

我有一个 UITableView,其中的单元格在选择时会将 viewControllers 推送到堆栈上。子视图控制器接受用户输入,然后从堆栈中弹出。

当子 viewController 弹出时,我希望父 tableView 更新所选单元格的值,然后取消选择该行。我可以使用 reloadData 更新单元格,也可以使用 deselectRowAtIndexPath 取消选择该行 -但我不能同时执行这两项操作

我理解为什么会这样 - reloadData 隐式取消选择单元格,而 deselectRowAtIndexPath 显式取消选择它,但我很奇怪我找不到任何人想要实现相同的重新加载/取消选择行为。我在这里想念什么?

所有代码都在 viewWillAppear:animated 中 - 如果我将 deselectRowAtIndexPath 放在 viewWillAppear 中并将 reloadData 放在 viewDidAppear 中,我可以接近,但这不是我想要的。