问题标签 [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.
iphone - iPhone:UITableView reloadData 计时问题
我遇到了一个常见的 TableView 数据重新加载问题。我已经阅读了许多关于同一主题的问题,但问题与我的问题并不完全相同......
我有一个基于导航的应用程序。在 RootViewController 的 viewDidLoad 方法中,我发出请求以获取 JSON 数据(文章)。连接完成加载后,我为每个条目创建自定义文章对象。Article 类有一个 initWithDictionnary 方法,它初始化对象的属性,最重要的是创建一个下载图像的请求。当连接完成加载后,我设置了 Article 对象的图像属性。目标是使用下载的图像初始化 cell.imageView.image 属性。到那时,您可能已经猜到问题所在了。图像在单元格图像被渲染后下载,因此它保持为空,直到重新加载单元格(例如,如果它离开屏幕然后又重新加载)。我想我应该在某个时间调用 reloadData 但我没有 不知道什么时候。理想情况下,我会在所有单元格都已加载但似乎不可能时调用它。我尝试了一堆疯狂的事情,比如等待一个单元格加载并尝试重新加载前一个单元格,但它没有用。通过阅读此处的问答,我了解了 Apple 的 LazyTableImage 示例代码,但我并不了解所有内容,因此我不确定我应该/可以使用它。
如果您需要更多详细信息,请询问我。
提前感谢您的帮助。
objective-c - reloadData 同步问题
所以这是我的问题。在我的应用主页中,我有一个简单的 UITableView,它最多可以容纳 3 个部分,2 个部分,每个部分最多 3 个项目,第三个部分最多可以包含 6 个项目。
每个部分都有一个与之关联的标题。
实际内容来自网络,我发出请求,服务器发送数据,我用 NSXMLParser 解析响应,创建数组来保存每个部分的数据(3 个数组),并创建另一个数组来保存我将要引用的部分必须显示。
然后,最后,我调用 [myTableView reloadData] 来刷新内容并重绘表格。用户还可以自己刷新内容。为此,我使用了类似于 Facebook 应用程序的下拉刷新机制。
使用 pull-to-refresh 刷新内容也会调用 [myTableView reloadData]。当我刷新内容并且表格需要更改其布局时,我遇到了严重的崩溃(例如:表格当前包含所有 3 个部分,并且在我 reloadData 后它只会显示一个部分)。
我使用调试器来追踪问题。这是我发现的:
- 用户将整个表格拉下 50 像素然后释放
- 动画开始使表格“向上”以适应 320x50 视图,显示“正在加载”消息 + 在表格顶部动画的 UIActivityIndicatorView
- 触发刷新,我在后台任务中发出新的 Web 服务请求,获取新数据,解析,更新数组,最后在主线程上执行 reloadData
- 与此同时,虽然刷新正在做所有我注意到 UITableView STILL 发送委托消息到:
- 表视图:viewForHeaderInSection:
- 表视图:cellForRowAtIndexPath:
我认为这是因为下拉刷新动画将表格“向上移动”并显示新的单元格/标题,从而调用上述内容。
问题是这会导致可怕的崩溃,因为保存节数据的数组和节数组本身似乎是同时修改的。
发生这种情况时,委托方法可能会在错误的上下文中使用更新/尚未更新的项目/节数组。也就是说,之前
- numberOfSectionsInTableView:
- 表视图:numberOfRowsInSection:
有机会为更新的数组正确更新新结构。
我知道没有任何代码示例的故事很长,但我想如果我已经知道问题(至少我希望我知道)并且如果有人看到我的观点,也许有人可以指出我正确的方向来纠正这个同步问题.
谢谢阅读!
稍后编辑:
我发现问题出在哪里。我的 pull-to-refresh 机制使用如下所示的 stopLoading 回调:
{ isLoading = NO;
}
在某些时候,我重置了我的表的 contentInset,将其设置为 UIEdgeInsetsZero。这以及在主线程上返回后台刷新后我在 reloadData 之前调用 stopLoading 的事实 - 在错误的时刻触发了错误的委托回调。
所以这是我表的 contentInset 和 reloadData 更改之间的时间问题。
ios - [tableView 重载数据]; 在导航回根控制器之前不会重新加载
我和一个朋友正在开发一个购物清单应用程序,但在使用 [tableView reloadData]; 时遇到了一些问题。我们将杂货清单存储在 plist 中,并有一个添加项目子视图。当您离开该子视图返回列表时,即使我们正在更新 plist 并在 viewWillAppear 中调用 reloadData,列表也不包含新项目。它确实有效;如果我们导航回所有列表的主列表,然后返回到我们刚刚添加项目的特定列表,那么这些项目就会显示出来。同样,我们想从列表中删除项目,只需选择行并在项目旁边显示一个复选标记。尽管我们在DidSelectRowatIndExpath中也调用ReloDdata,但该列表不会自动更新行时。再次,如果我们导航回主列表然后返回到单个列表,则会显示更改。我已经检查过了,nib 文件中的委托和数据源已正确链接到文件的所有者。
这是 viewWillAppear 的代码:
和 didSelectRowAtIndexPath:
任何帮助将非常感激!提前致谢!
iphone - 如何从自定义 UITableViewCell 调用操作以重新加载 tableView
我有一个简单的问题:我无法"[tableView reloadData]"
从.mUIButton
中调用。UITableViewCell
我有一个tableView
显示每行UITableViewCell
包含一个的。UIButton
当我单击单元格的按钮时,我想从我的 tableView 中重新加载数据。
iphone - 重新加载数据时tableView会崩溃
在我调用方法 getData 之后。我尝试重新加载数据,但它没有重新加载数据。我不知道为什么,但我可以正确获取数据。哦,我在 viewDidAppear 设置了 getData 因为我想快速从上一个视图进入这个视图,用户会看到加载视图,当我完全加载数据时,加载视图将消失,表格视图将出现
这是我的简单代码
.m
。H
我已经链接参考。出口。
它说它在 main.m 崩溃了如何在新数据中设置单元格。
对不起。它只是显示 EXE-BAD-ACCESS 错误
iphone - 在 iPhone 应用上登录后重新加载数据
我有一个在 mainApp的viewDidLoad上启动的登录。这意味着mainApp 中的numberOfRowsInSection在登录之前运行,并导致我的tableview没有被填充。
我在mainApp的viewWillAppear中有我的 JsonArray 和 reloadData 函数,以使numberOfRowsInSection在登录之后运行。所以我放了:
...在视图中将出现。但这并不能让它在登录后运行。
有什么建议么?
提前致谢。
代码更新
登录页面
主视图
objective-c - 重新加载 UITableView 时,iOS AccessoryDetail 图像不会更新
我正在加载 UITableView 有时它会有 5 个单元格,有时会有 4 个单元格。根据它将有多少个单元格,我想为第 2 行或第 3 行设置 AccessoryDetail 按钮。我知道条件有效,因为我已经成功尝试过,didSelectRowAtIndexPath:
但由于某种原因,TableView 似乎没有更新取决于显示的行数。我正在成功地重新加载 TableView 数据viewWillAppear:
,[tableView reloadData]
但这并不能解决我的 AccessoryDetail 问题。我试过用[tableView reloadInputViews]
没用。问题是 AccessoryDetail 图像始终设置为第 2 行或第 3 行,具体取决于我开始从应用程序加载哪个视图。
以下是该cellForRowAtIndexPath:
方法的逻辑:
编辑:我已经根据 Simon Lee 的建议用 else 子句改变了我的方法,看起来像这样,但它似乎也不起作用:
xcode - Tableview reloadData 没有被执行——有时
我有一个从 2 个不同的地方调用的视图控制器。
1)我从根控制器调用它。它被显示并填充。添加按钮完美运行。我打开一个模态表单,获取信息并通过它的委托将其返回给视图控制器。
但是,当我从另一个视图(在拆分视图的右侧)调用它时,相同的代码不会重新加载表。它添加了数据——如果我离开表单然后回来,数据就在那里,但表格视图没有被刷新。当我单步执行代码时,它得到了这条线,然后像看不到它一样越过它。
uitableview - UITable 视图不会重新加载
我有一个 UITableView 放在基于视图的应用程序上。它已正确连接,因为我最初可以向它发送数据。问题是清理桌子。我可以清除 NSMutableArray 但数据仍显示在表中。
这是索引路径处的行单元格: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cocoa-touch - 为什么我不能同时在 viewWillAppear:animated 中调用 reloadData 和 deselectRowAtIndexPath ?
我有一个 UITableView,其中的单元格在选择时会将 viewControllers 推送到堆栈上。子视图控制器接受用户输入,然后从堆栈中弹出。
当子 viewController 弹出时,我希望父 tableView 更新所选单元格的值,然后取消选择该行。我可以使用 reloadData 更新单元格,也可以使用 deselectRowAtIndexPath 取消选择该行 -但我不能同时执行这两项操作。
我理解为什么会这样 - reloadData 隐式取消选择单元格,而 deselectRowAtIndexPath 显式取消选择它,但我很奇怪我找不到任何人想要实现相同的重新加载/取消选择行为。我在这里想念什么?
所有代码都在 viewWillAppear:animated 中 - 如果我将 deselectRowAtIndexPath 放在 viewWillAppear 中并将 reloadData 放在 viewDidAppear 中,我可以接近,但这不是我想要的。