2017-02-23 80 views
0

我遇到了UITableViewController的問題:表格視圖顯示出來,但是觸摸單元格時每隔兩秒只會調用didDeselectRowAt。有沒有人看到這個代碼的問題?UITableView的問題:動作只能每隔一秒執行一次

import UIKit 
import MediaPlayer 


class LibraryTableViewController: UITableViewController{ 
    let mediaItems = MPMediaQuery.songs().items 


    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell") 
    } 


    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return mediaItems!.count 
    } 

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
     cell.textLabel?.text = mediaItems?[indexPath.row].title  
     return cell 
    } 

    override func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) { 
     print("table item selected") 
     OperationQueue.main.addOperation{ 
      self.performSegue(withIdentifier: "showPlayer", sender: self) 
     } 
    } 

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
     if segue.identifier == "showPlayer"{ 
      let playerVC = segue.destination as! PlayerViewController 
      let indexPath = tableView.indexPathForSelectedRow! 
      playerVC.mediaItem = mediaItems?[indexPath.row]  
     } 
    }  
} 

回答

5

變化 selectRowAtdidSelectRowAt

+0

非常感謝你!我一直盯着代碼,但看不到這個小小的區別:-) –

+0

原來,這是相當普遍的錯誤http://stackoverflow.com/questions/2106292/uitableview-didselectrowatindexpath-not-being-called-on-first -tap –

+0

哈哈!笨拙的嘿嘿 – PerrierCitror