2017-08-01 9 views
0

私は2番目のビューコントローラにUIActivityIndicatorViewを持っており、ユーザーが最初のビューでボタンを選択するとJsonが開始されます。しかし、同じ時間にアプリが最初viewcontrollerJsonがストップを終えたときに私がしたいアニメーションUIActivityIndicatorViewを有する第二viewcontrollerを実行しますあなたはときJson駅私のコードで見るように、第2のビューコントローラでUIActivityIndicatorView(単に私が別のviewcontrollerUIActivityIndicatorViewを停止し、隠したい)UIActivityIndi​​catorViewを迅速に別のビューコントローラで非表示にする方法3?

ここでは、最初のビューコントローラ

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


    let selectedCell:UITableViewCell = tableView.cellForRow(at: indexPath as IndexPath)! 
    selectedCell.backgroundColor = UIColor.clear 
    selectedCell.tintColor = UIColor.clear 
    print("Chat Subject Has Benn Selected!") 
    let selectedItem = indexPath.row 
    print(selectedItem) 


    chatViewController.selectedChat = selectedItem 
    ///////////////////////Start Chat 
    print(EmailSignInViewController.id)  

    ////////////////////// Get chat Page 

    let urlPath3: String = "http://example/api?api_token=\(EmailSignInViewController.api_token)&id=\(EmailSignInViewController.id[selectedItem])" 


    print(urlPath3) 
    let url3: NSURL = NSURL(string: urlPath3)! 
    let request3: NSMutableURLRequest = NSMutableURLRequest(url: url3 as URL) 

    request3.httpMethod = "GET" 


    let queue3:OperationQueue = OperationQueue() 

    NSURLConnection.sendAsynchronousRequest(request3 as URLRequest, queue: OperationQueue.main) {(response, data, error) in 


     do { 
      let data = try Data(contentsOf: url3 as URL) 
      print(NSString(data: data, encoding: String.Encoding.utf8.rawValue)!) 

     } catch { 
      print(error.localizedDescription) 
     } 

    do { 

    if let jsonResult3 = try JSONSerialization.jsonObject(with: data!, options: []) as? Array<Any> { 

    for item in jsonResult3 { 
    print("item") 
    print(item) 

    if let dict = item as? NSDictionary { 
    if let type = dict.value(forKey: "type"){ 
    chatViewController.type.append(type as! Int) 

    print("type") 
    print("\([type])") 

     chattingViewController.checklist.append(type as! Int) 

    } 

    if let text = dict.value(forKey: "text"){ 

    chatViewController.text.append(text as!String) 


     chattingViewController.list.append(text as!String) 
    print("text") 
     print("\([text])") 


    } 
     if let created_at = dict.value(forKey: "created_at"){ 

       self.created.append(created_at as!String) 


      print("created_at") 
      print("\([created_at])") 
      print("\([created_at])") 


     } 



    } 
    } 

     print(jsonResult3) 

    print("ASynchronous\(jsonResult3)") 
     chatViewController.created_at = self.created 

     print("chat Page") 

    } 
    } catch let error as NSError { 
    print(error.localizedDescription) 
    } 

      self.performSegue(withIdentifier: "chatting", sender: nil) 

    } 

のコードですユーザー室温秒viewcontrollerに移動し、UIActivityIndicatorViewはアニメーションを開始し、ショーと私はJsonストップアニメーションの最後の行にしたいと 、ここでは、ビューコントローラに必要なコード

@IBOutlet weak var chattingWaiting: UIActivityIndicatorView! 
override func viewDidLoad() { 
    super.viewDidLoad() 

    chattingWaiting.startAnimating() 
    chattingWaiting.isHidden = false 

} 
+0

あなたが最初のViewControllerの子として2番目のViewControllerを追加する場合、あなたは[child.activityIndi​​cator stopAnimating]によって、第2のViewControllerのUIActivityIndi​​catorViewを解任することができます。 –

+0

どうすればいいですか?助けてください –

+0

あなたに役立ついくつかのコードを追加してください。 –

答えて

0

アップデート秒であることを隠します。 :あなたが持っている実際の問題は、ナビゲーションが発生した後にを2番目のView ControllerのviewDidLoad()メソッドに追加していることです。

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

    self.startAnimating() //Add here 
    let selectedCell:UITableViewCell = tableView.cellForRow(at: indexPath as IndexPath)! 
    selectedCell.backgroundColor = UIColor.clear 
    selectedCell.tintColor = UIColor.clear 
    print("Chat Subject Has Benn Selected!") 
    let selectedItem = indexPath.row 
    print(selectedItem) 


    chatViewController.selectedChat = selectedItem 
    ///////////////////////Start Chat 
    print(EmailSignInViewController.id)  

    ////////////////////// Get chat Page 

    let urlPath3: String = "http://example/api?api_token=\(EmailSignInViewController.api_token)&id=\(EmailSignInViewController.id[selectedItem])" 


    print(urlPath3) 
    let url3: NSURL = NSURL(string: urlPath3)! 
    let request3: NSMutableURLRequest = NSMutableURLRequest(url: url3 as URL) 

    request3.httpMethod = "GET" 


    let queue3:OperationQueue = OperationQueue() 

    NSURLConnection.sendAsynchronousRequest(request3 as URLRequest, queue: OperationQueue.main) {(response, data, error) in 


     do { 
      let data = try Data(contentsOf: url3 as URL) 
      print(NSString(data: data, encoding: String.Encoding.utf8.rawValue)!) 

     } catch { 
      print(error.localizedDescription) 
     } 

    do { 

    if let jsonResult3 = try JSONSerialization.jsonObject(with: data!, options: []) as? Array<Any> { 

    for item in jsonResult3 { 
    print("item") 
    print(item) 

    if let dict = item as? NSDictionary { 
    if let type = dict.value(forKey: "type"){ 
    chatViewController.type.append(type as! Int) 

    print("type") 
    print("\([type])") 

     chattingViewController.checklist.append(type as! Int) 

    } 

    if let text = dict.value(forKey: "text"){ 

    chatViewController.text.append(text as!String) 


     chattingViewController.list.append(text as!String) 
    print("text") 
     print("\([text])") 


    } 
     if let created_at = dict.value(forKey: "created_at"){ 

       self.created.append(created_at as!String) 


      print("created_at") 
      print("\([created_at])") 
      print("\([created_at])") 


     } 



    } 
    } 

     print(jsonResult3) 

    print("ASynchronous\(jsonResult3)") 
     chatViewController.created_at = self.created 

     print("chat Page") 

    } 
    } catch let error as NSError { 
    print(error.localizedDescription) 
    } 
      self.activityIndicator.stopAnimating() //Removed here 
      self.performSegue(withIdentifier: "chatting", sender: nil) 

    } 

また、2つ目のビューコントローラからこれらの2行を削除します。

chattingWaiting.startAnimating() 
chattingWaiting.isHidden = false 
+0

viberやwhatsappのような多くのチャットアプリのように見えるか...ユーザーがチャットの息子を選ぶときにスピードが非常に重要で、その後JsonがUIActivityIndi​​catorViewを終了するとhide –

+0

これはベストプラクティスに従うようアドバイスしただけですが、上に追加したコードでactivityIndi​​catorを閉じることはできますが、activityIndi​​catorをparentViewに追加する場合はself.activityIndi​​cator.stopAnimating()を使用してください。 –

+0

どうすれば追加できますか?ストーリーボードの最初のビューコントローラーコードにドラッグするだけですか? –

関連する問題