2017-04-06 5 views
2

私のアプリでは、テーブルビューコントローラがあります。ユーザーがtableviewの最後の行を入力すると、アクションシートにサインアウトが表示されます。このアクションのコードは次のとおりです。アクションシートが表示されるまでに10秒以上かかる

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

     switch indexPath.row { 
     case 0: 
      //.. 
     case 1: 
      //.. 
     case 2: 
      //.. 
     case 3: 

      let logOutMenu = UIAlertController(title: nil, message: "Are you sure want to logout?", preferredStyle: .actionSheet) 

      let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 
      let logOutAction = UIAlertAction(title: "Log out", style: .default, handler: { (UIAlertAction) in 
       print("sign out") 
      }) 

      logOutMenu.addAction(cancelAction) 
      logOutMenu.addAction(logOutAction) 

      self.present(logOutMenu, animated: true, completion: nil) 
     default: break 

     } 
    } 

アクションシートの動作は問題ありません。アクションシートを表示するには約10秒(またはそれ以上)かかります。私は実際のデバイスでも気づいたのと同じ動作です。私は間違っているの?

+3

は、UIの更新を「スローが起こるために」より長い時間が混乱して取得すると同時に、そうでない場合がある2つのアニメーションアニメーションせずにインデックスパスで選択解除行を呼び出す必要がありますメインスレッド'present'にブレークポイントを置き、実行中のスレッドを確認してください。 –

+0

@AshleyMills良い点。 –

+0

私はブレークポイントを現在に置いており、実行中のメソッドはtableView(UITableView、didSelectRowAt indexPath:IndexPath)です。 –

答えて

3

あなたは、多くの場合、あなたがオフに何かをやっている示し

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 

    switch indexPath.row { 
    case 0: 
     //.. 
    case 1: 
     //.. 
    case 2: 
     //.. 
    case 3: 

     let logOutMenu = UIAlertController(title: nil, message: "Are you sure want to logout?", preferredStyle: .actionSheet) 

     let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) 
     let logOutAction = UIAlertAction(title: "Log out", style: .default, handler: { (UIAlertAction) in 
      print("sign out") 
     }) 

     logOutMenu.addAction(cancelAction) 
     logOutMenu.addAction(logOutAction) 

     self.present(logOutMenu, animated: true, completion: nil) 
     // Deselect your row it will fix it 
     tableView.deselectRow(at: indexPath, animated: false) 
    default: break 

    } 
} 
関連する問題