2017-01-13 39 views
0

私が望むのは、新しいビューを起動するためのセルの簡単なタップです。打ち上げは機能しますが、選択されたことを登録するには、セルを保持するのに非常に長い時間(3〜5秒)かかります。これは正常な動作ですか?簡単な.touchUpInsideイベントに応答する方法が見つかりません。だから私は何が間違っているの?私は、UITableViewCellのAppleのドキュメントを読みましたが、ここで私を助けるフィールドや設定を見つけることができません。前もって感謝します!UITableViewCell didSelectRowAtIndexPathが選択に応答するのが非常に遅い

EDIT:ビューコントローラのviewDidLoadで :のViewControllerで

self.searchTable.dataSource = self 
self.searchTable.delegate = self 
self.searchTable.register(UINib(nibName: "ItemCellView", bundle: nil), forCellReuseIdentifier: "itemCell") 
self.searchTable.reloadData() 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar){ 
    searchItems.removeAll() 
    self.searchBar.endEditing(true) 
    requests.requestSearch(query: searchBar.text!, filter: "RATING", vc: self) 
} 

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return (self.searchItems.count) 
} 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = self.searchTable.dequeueReusableCell(withIdentifier: "itemCell")! as! ItemCell 
    cell.formatCell(item: self.searchItems[indexPath.row]) 

    return cell 
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ 
    let item = self.searchItems[indexPath.row] 
    let vc = self.storyboard?.instantiateViewController(withIdentifier: "item") as? ItemController 
    vc?.item = item 
    self.navigationController?.pushViewController(vc!, animated: false) 
} 

EDIT#2:

私も「私はドンポイントを作りたいです私のコードにはGestureRecognizersが全くありません。

+0

です。 UIの変更はメインスレッドで行われなければならないので、 'DispatchQueue.main.async {}'を使うと助けになるかもしれませんが、コードなしで言うのは難しいです – mat

+0

UIがロックされていませんよく私がセルのサブビューとしてボタンを持っていたとき。私はスクロールしながら、セルの再利用性と古いデータに対応するボタンの他​​の問題に遭遇しました。 – user3858610

+0

私はコードを投稿できますが、これはチェックされていないストーリーボードのチェックボックスの可能性が高いと思います。 「遅れたコンテンツ」のようなものだが、私はそれを試みた – user3858610

答えて

1

私はそのファイルにジェスチャー認識機能を直接追加していませんでしたが、キーボードからタップして消滅させる機能を使って間接的に追加しました。私がしなければならなかったのは、この1行のコードをその関数に追加することでした。今は完全に動作します。助けてくれてありがとう@mat!

は、ここであなたのコードを投稿していない場合は、問題を見つけることは非常に困難である犯人

extension UIViewController { 
func hideKeyboardWhenTappedAround() { 
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) 
    tap.cancelsTouchesInView = false 
    view.addGestureRecognizer(tap) 
} 

func dismissKeyboard() { 
    view.endEditing(true) 
} 
+0

あなたはこの動作をさらに説明できますか?私はこれが役に立った! –

関連する問題