2017-06-26 3 views
0

imgurから取得したJSONデータを読み込むためにテーブルビューを取得しようとしています。私はバックエンドに行くと、imgurデータを取得し、私に戻ってそれを吐いて、そして私はテーブルを作成することができます要求をすることができます。しかし、私はこのデータが最後にカットオフされている、本当に奇妙な問題を抱えています。 Hereは画像です。別の検索をしようとすると、それ以上テーブルにデータが読み込まれないので、これをやっているときに私はそれを壊します。私が間違っていることは本当にわかりません。私はまた、これをある時点でモーダルでクリック可能にしようとしています。再利用可能なセルをデキューするのはおそらく正しいとは言えませんが、この問題の後に私はそこに着くでしょう。JSONデータを追加するときにUITableViewが動作しない

とにかく、助けていただければ幸いです。

class ViewController3: UIViewController, UITextFieldDelegate,UITableViewDataSource { 

    var dataState: Data? 

    var linkArray = [String]() 
    var titleArray = [String]() 

    @IBOutlet weak var tableView: UITableView! 

    @IBOutlet weak var SearchTextField: UITextField! 

    @IBAction func SearchButton(_ sender: Any) { 

     let urlString = "http://localhost:3000/getimages" 


     Alamofire.request(urlString, method: .post, parameters: ["search": SearchTextField.text!],encoding: JSONEncoding.default, headers: nil).responseJSON { 
      response in 
      switch response.result { 
      case .success: 
       let json = JSON(response.data!) 


       for (_, subJson) in json["data"] { 
        if let link = subJson["link"].string { 
         self.linkArray.append(link) 
        } 
        if let title = subJson["title"].string{ 
         self.titleArray.append(title) 
        } 
       } 
       print("this is linkArray ", self.linkArray) 
       print("this is titleArray ", self.titleArray) 
       self.dataUpdated() 
       break 
      case .failure(let error): 
       print(error) 
      } 
     } 


    } 


    @IBAction func BackToTabControl(_ sender: Any) { 
     let storyBoard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

     let tabBarVC = storyBoard.instantiateViewController(withIdentifier: "tabBarController") as! UITabBarController 

     if let vc1 = tabBarVC.viewControllers?.first as? ViewController1 { 
      vc1.dataState = dataState 
     } 

     let appDelegate = UIApplication.shared.delegate as! AppDelegate 
     appDelegate.window?.rootViewController = tabBarVC 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     self.tableView.bounces = true 
     SearchTextField.returnKeyType = UIReturnKeyType.done 
     SearchTextField.delegate = self 
     tableView.dataSource = self 

    } 

    func numberOfSections(in tableView: UITableView) -> Int { 
     return 1 
    } 

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCell(withIdentifier: "cellReuseIdentifier")! //1. 

     let text = titleArray[indexPath.row] //2. 

     cell.textLabel?.text = text //3. 

     return cell //4. 
    } 

    func dataUpdated() { 
     DispatchQueue.main.async { 
      self.tableView.reloadData() 
     } 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 
+0

(自動)レイアウトの問題のようです。 – vadian

+0

あなたはプロトタイプのセルに制約を設定しましたが、最初にやり直してください。確かにその自動レイアウトの問題 –

+0

私は非常にスマートな男性ではありません。どうすればいい?制約メニュー(http://imgur.com/a/GDsub)には、制約を設定する場所(プロトタイプセル)が表示されません。 –

答えて

0

は、次の試してみてください。

if let label = cell.textLabel { 
     label.text = text 
     label.sizeToFit() 
    } 
0

あなたは明らかに私はこれを知らなかった.....これは、シミュレータでスクロールしてもらうためにテーブルビュー内をクリックして保持する必要があります。助けてくれてありがとう。

関連する問題