[英]Segue lag, tableview in Swift
我正在Swift 3中的第一個應用程序中工作。我正在使用tableView(由“擴展MainController:UITableViewDataSource”提供)。 從這個tableView中,通過情節提要,我有兩個選擇。 一個用於編輯(通過單擊附件圖標),另一個用於更詳細的屏幕(通過單擊表格行)。 我不是通過代碼來稱呼這個故事,而是通過情節提要。
我的問題是有時會有很大的滯后。 就像單擊一行后一樣,30秒后將顯示下一個屏幕。 但是現在總是。 有時其立即起作用。 有趣的是,當我觸摸第1行時,什么也沒有發生,接下來我單擊第2行,然后出現第1行。
我也在使用委托,這是准備任務的代碼:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// 1
if segue.identifier == "AddSensor" {
// 2
let navigationController = segue.destination
as! UINavigationController
// 3
let controller = navigationController.topViewController
as! AddController
// 4
controller.delegate = self
}
else if segue.identifier == "EditSensor" {
let navigationController = segue.destination
as! UINavigationController
let controller = navigationController.topViewController
as! AddController
controller.delegate = self
if let indexPath = tableView.indexPath(
for: sender as! UITableViewCell) {
controller.sensorToEdit = sensors[indexPath.row]
}
}
else if segue.identifier == "DetailSeq" {
let navigationController = segue.destination
as! UINavigationController
let controller = navigationController.topViewController
as! DetailController
controller.delegate = self
if let indexPath = tableView.indexPath(
for: sender as! UITableViewCell) {
controller.sensorRecieved = sensors[indexPath.row]
}
}
}
我讀到它是iOS8中的常見錯誤,可以通過添加來解決
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
DispatchQueue.main.async {
self.performSegue(withIdentifier: "DetailSeq",sender: self)
}
}
但這對我沒有用。 我不知道下一步該怎么解決。 誰能指導我?
根據這個SO問題 ,如果以代碼顯示視圖控制器而不是使用故事板上的segue,則您可能能夠修復您的錯誤。 這樣的事情,目的地是您要去的VC。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath:
NSIndexPath) {
DispatchQueue.main.async {
self.presentViewController(destination, animated: true) { () -> Void
in
}
}
}
您必須像這樣使用:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
DispatchQueue.main.async {
self.performSegue(withIdentifier: "DetailSeq",sender: self)
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.