2016-06-30 9 views
0

私はAlamofireで、このGET要求を行うことができますどのように任意のアイデア - 私は戻って欲しい正確に何を取得 - FUNCのにtableView(のtableViewに情報を渡す:のUITableView - 移入して戻って、各セルを、まだ私のテーブルには、単純に、表示されません?ロードされたデータセルデータがUITableViewに表示されませんか?

AlamoFire内からは、私がself.refresh(コールリターンを約束した)メインスレッドでこれを呼び出す:?。

func refresh() { 

     dispatch_async(dispatch_get_main_queue(),{ 
      self.tableView.reloadData() 
     }); 

- 任意のアイデアこれは文字通り私にナットを駆動しているしてくれてありがとう事前に任意のアイデアやソリューション!

import UIKit 
import Alamofire 
import MapKit 

class ListViewController: UIViewController, UISearchBarDelegate, CLLocationManagerDelegate, UITableViewDelegate, UITableViewDataSource { 

    var tools = [Tool]() 


    @IBOutlet weak var searchBar: UISearchBar! 


    @IBOutlet weak var tableView: UITableView! 

    let locationManager = CLLocationManager() 
    var currentLat: CLLocationDegrees = 0.0 
    var currentLong: CLLocationDegrees = 0.0 


    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.tableView.delegate = self 
     self.tableView.dataSource = self 
     searchBar.delegate = self 

     self.tableView.rowHeight = UITableViewAutomaticDimension 
     self.tableView.estimatedRowHeight = 116 
     self.tableView.registerClass(ToolTableViewCell.self, forCellReuseIdentifier: "ToolTableViewCell") 

     self.locationManager.delegate = self 
     self.locationManager.requestAlwaysAuthorization() 

     self.locationManager.requestWhenInUseAuthorization() 

//  if CLLocationManager.locationServicesEnabled() { 
      locationManager.delegate = self 
      locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters 
      locationManager.startUpdatingLocation() 

    } 

    func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     let locValue:CLLocationCoordinate2D = manager.location!.coordinate 
     //  print("locations = \(locValue.latitude) \(locValue.longitude)") 
     let location = locations.last! as CLLocation 
     currentLat = location.coordinate.latitude 
     currentLong = location.coordinate.longitude 

    } 

    func searchBarSearchButtonClicked(searchbar: UISearchBar) 
    { 
     searchbar.resignFirstResponder() 
     tools = [] 

     let defaults = NSUserDefaults.standardUserDefaults() 
     let userid: Int = defaults.objectForKey("toolBeltUserID") as! Int 

     let searchTerm = String(searchBar.text!) 
     print(searchTerm) 


     Alamofire.request(.GET, "http://localhost:3000/tools/search", parameters: ["keyword": searchTerm, "latitude": currentLat, "longitude": currentLong, 
      "user": userid]) .responseJSON {response in 
       if let JSON = response.result.value { 
        print("\(JSON)") 

        for i in 0 ..< JSON.count { 

         let owner = JSON[i].objectForKey("owner") 
         let tool = JSON[i].objectForKey("tool") 
         let title = tool!["title"] as! String! 
         let ownerId = owner!["id"] as! Int! 
         let distanceToTool = JSON[i].objectForKey("distance") as! Double 
         var description: String 

         if let des = tool!["description"] as? NSNull { 
          description = "" 
         } else { 
          description = (tool!["description"] as? String!)! 
         } 

         let myTool = Tool(title: title!, description: description, ownerId: ownerId!, distance: distanceToTool) 


         self.tools.append(myTool) 

        } 

//     dispatch_async(dispatch_get_main_queue(), { 

         self.refresh() 

//     }) 

       } else { 
        print("Sent search term, but no response") 
       } 
     } 

    } 

    func refresh() { 

     dispatch_async(dispatch_get_main_queue(),{ 
      self.tableView.reloadData() 
     }); 

    } 

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

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 


     let cellIdentifier = "ToolTableViewCell" 
     let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as!ToolTableViewCell 
     let tool = tools[indexPath.row] 

     if(indexPath.row==0){ 
     cell.title?.text = tool.title 
     //  print(tool.title) 
     //  cell.toolListDescription?.text = tool.description 
     cell.ownerId = tool.ownerId 
     //  print(tool.ownerId) 
     //  print(tool.distance) 
     //  cell.distance?.text = "\(tool.distance)mi" 
     } 

     print(cell) 
     return cell 
    } 
} 
+0

あなたはどんな出力を得ていますか? 'numberOfRowsInSection'が呼び出されていますか? 'cellForRowAtIndexPath'が呼び出されていますか?あなたのテーブルビューは画面に表示されていますか? – Paulw11

+0

はい、はい、それはとても混乱しています。適切な制約に関して、ストーリーボードでこれをどうやって確認するのですか? – emmet

+0

私が通常行う最初のことは、背景色を明るい緑色などに設定して、テーブルビューが表示されているかどうかを確認することです。ストーリーボードのオレンジ色または赤色の制約の警告を確認します。また、 'cell.title'プロパティが' cellForRowAtIndexPath'にブレークポイントを設定していないことを確認し、 – Paulw11

答えて

0

あなたはそれが'ToolTableViewCell'

おかげだった私の場合にはattribute inspector!Reuse Identifierを設定することを確認してください!

関連する問題