2017-02-23 158 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