升级到XCode 9.2,现在我的应用程序在ios模拟器上表现不佳。部署到物理设备时,它仍可正常运行。
问题是页面需要10秒到1分钟才能刷新。例如在tableview.reloadDate()之后。我确信数据的重新加载是立即发生的,只是在长时间延迟之后页面才会被显示
有趣的是,如果我点击模拟器屏幕,响应就好像我点击了刷新(但尚未显示)的页面。
我不认为这是一个动画问题,我已经确保在模拟器调试菜单中“慢动画”#39;没有切换。此外,我还为Windows Scale'优化了渲染。检查。
EDIT 为了提供更多信息,我提供了一个示例代码。如果使用Xcode 9.2的人可以创建单页应用程序并将tableView放入View Controller,然后将下面的代码添加到swift文件并在11.2模拟器上运行它并让我知道它是怎么回事我会非常感激。请注意,当您点击一个单元格时,它应该使用下一级数据重绘表格,对我而言,这将花费一分钟。如果您在更新屏幕之前点击,则会立即重新绘制页面(但就像您点击了尚未绘制的页面一样)。
或者只是仔细阅读代码,看看你是否能发现导致问题的东西。
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var tableView: UITableView!
var level = 1
let data1 = ["One - one", "One - two", "One - three"]
let data2 = ["Two - one", "Two - two", "Two - three"]
let data3 = ["Back to One"]
var data: Array<String> = Array<String>()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
data = data1
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cellId")!
let text = data[indexPath.row]
cell.textLabel?.text = text
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("Cell selected from data\(level)" )
level += 1
if level == 2 {
data = data2
} else if level == 3 {
data = data3
} else if level == 4 {
data = data1
level = 1
}
tableView.reloadData()
print("Data loaded")
}
}
注意:我知道这段代码是垃圾,但它证明了问题,请不要批评它的无用。