gpt4 book ai didi

ios - TableView Segue 到新 ViewController 不能工作两次

转载 作者:行者123 更新时间:2023-11-30 14:13:31 25 4
gpt4 key购买 nike

我有一个 TableViewController,其中选择一行会进行网络调用,显示 ActivityIndi​​cator,并在网络调用的完成 block 中停止指示器并执行推送转场。

在测试中,我发现当转到新的 View Controller 、返回并选择另一行时,它会显示事件指示器,但永远不会停止或调用推送转场。 didSelect 的代码:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.tableView.userInteractionEnabled = false
self.searchController?.active = false
self.idx = indexPath
let cell = tableView.cellForRowAtIndexPath(indexPath) as! CustomTableViewCell
cell.accessoryView = self.activityIndicator
self.activityIndicator.startAnimating()

self.networkingEngine?.getObjectById("\(objectId)", completion: { (object) -> Void in
if object != nil {
self.tableView.userInteractionEnabled = true
self.chosenObject = object
self.activityIndicator.stopAnimating()
self.tableView.reloadRowsAtIndexPaths([self.idx], withRowAnimation: .None)
self.tableView.deselectRowAtIndexPath(self.idx, animated: true)
self.performSegueWithIdentifier("segueToNewVC", sender: self)
}
else {

}
})
}

以及我使用 Alamofire 的网络调用

func getObjectbyId(objectId: String, completion:(Object?) -> Void) {
Alamofire.request(Router.getObjectById(objectId: objectId))
.response { (request, response, data, error) -> Void in
if response?.statusCode != 200 {
completion(nil)
}
else if let parsedObject = try!NSJSONSerialization.JSONObjectWithData(data as! NSData, options: .MutableLeaves) as? NSDictionary {
let object = parsedObject["thing"]
dispatch_async(dispatch_get_main_queue(), { () -> Void in
completion(object)
})
}
}
}

所以我设置了断点,它实际上是第二次进入完成 block 并调用它来停止指示器,重新加载该行,取消选择该行,重新启用 tableView userInteraction 并执行 segue。它也调用了我的prepareForSegue,但一旦完成,它就只是保持指示器仍在旋转,并且RAM使用量飙升至近2GB,直到模拟器崩溃。

我相信这与多线程有关,但我无法缩小确切的问题范围,因为我将重要的东西放在主线程上。

最佳答案

问题与将单元格的accessoryView设为activityIndi​​cator然后将其删除并在segue离开时重新加载所有内容有关。我不知道如何将其保留在那里并停止多线程问题,但我选择了进度警报 View 。如果有人有解决方案,我很想知道这是如何解决的。

关于ios - TableView Segue 到新 ViewController 不能工作两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com