我遇到了这种奇怪的行为UITableView.
我在我的应用程序中从CloudKit获取一些记录.我已经设置了一个专门的子类NSObject来处理所有这些,并且只要它接收到一条记录,它就会将记录添加到我的模型数组中,然后告诉它的委托它收到了一些东西.代表然后重新加载tableView.
func cloudKitFetchedRecord(identifier: NSString) {
if identifier.isEqualToString("getAllProfiles") {
self.tableView.reloadData()
}
}
Run Code Online (Sandbox Code Playgroud)
这一切都有效.除了我打电话之后reloadData,暂时没有任何事情发生.该表实际重新加载大约需要10-20秒.奇怪的是,当我点击屏幕时它也会重新加载,但是当我点火时reloadData没有任何反应.
我已经检查了我的整个应用程序,在任何地方放入了断点,但应用程序在延迟重新加载时没有做任何事情.我还清理了项目,清理了构建文件夹,几乎完成了我能想到的所有事情,但它一直在做这个.
有没有其他人遇到这种行为,或者有人知道如何解决它?
任何评论都将受到高度赞赏
我编写了一个应用程序,当默认设置更改时,我需要重新加载所有设置。
但我没有头绪。我尝试重新启动或重新加载第一个视图控制器,但它不起作用。我的问题出在我从核心数据中获取并从中加载标签的所有视图控制器中,但我必须关闭应用程序并重新启动它才能看到更改。
知道如何做到这一点吗?
我在 a 中有项目tableview,我想重新加载或更新tableview数据,除了 tableview 的第一行或第一个索引路径。
let visibleIndex = self.tableView.visibleCells.compactMap {
tableView.indexPath(for: $0) }
self.tableView.reloadRows(at: visibleIndex, with: .automatic)
Run Code Online (Sandbox Code Playgroud)
但是,这会重新加载所有可见单元格,我如何重新加载除第一行之外的所有可见单元格
我在iPhone上遇到了类似于此问题的问题,但同样的解决方案似乎并不适用于iPad环境.我的目标是调用我的方法forceReload,在我的RootViewController中定义,一旦模式被解除,它将从DetailView重新加载RootView中的countdown_table数据.forceReload直接从RootViewController调用时工作正常,但我似乎无法指向DetailView中的RootViewController.
我试过用了
RootViewController *root_view = [self.splitViewController.viewControllers objectAtIndex:0];
[root_view forceReload];
[root_view.countdown_table reloadData];
Run Code Online (Sandbox Code Playgroud)
但这仅指向导航控制器,而不是其中的视图控制器.即使模态被解除,RootViewController的viewWillAppear也不会被触发.
我怎么能指向这个文件?谢谢!
出于某种原因,尽管没有调用cellForRowAtIndexPath函数,但仍在调用tableview reloadData函数.我已经发布了以下完整代码.简而言之,使用视频作为数据源,每次视频值发生变化时,表格都会重新加载其数据.我已经确认这部分功能可以正常运行,因为我已经调试了它,并且每次发生这种功能时都会输出视频数量.尽管如此,cellForRowAtIndexPath甚至无法被调用一次.
import Foundation
import UIKit
import ReactiveCocoa
import enum Result.NoError
public typealias NoError = Result.NoError
public class VideosTable: UITableView, UITableViewDataSource, UITableViewDelegate {
// MARK: Public variables
public var currentVideo: Video!
// MARK: Private variables
private let videos = MutableProperty<[Video]?>(nil)
private let cellId = "cell"
// MARK Initializers
public required init(signal: Signal<[Video]?, NoError>, frame: CGRect) {
super.init(frame: frame, style: .Plain)
self.dataSource = self
self.delegate = self
self.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellId)
videos <~ signal
videos.signal.observeNext{_ in
self.reloadData()
}
}
videos <~ signal …Run Code Online (Sandbox Code Playgroud) reloaddata ×5
ios ×3
swift ×3
uitableview ×3
datasource ×1
indexpath ×1
ios4 ×1
objective-c ×1
restart ×1
swift2 ×1
xcode4 ×1
xcode7 ×1