したがって、現在、API呼び出しに基づいてカスタムセルを持つテーブルビューを作成しようとしています。データを取り込むと、テーブルビューがリロードされます。それはどれくらいのセルを持っているかに基づいてデータを持っていますが、それぞれが空です。私は人々が持っていたいくつかの同様の問題を見てきましたが、修正を見つけることができません。どんな助けも素晴らしいだろう、ありがとう!TableView Swift 3でブランクを返すカスタムセル
私は自分のAPIを呼び出し、必要なデータを収集します。その後、私はテーブルビューをリロードします。ここで
class SearchViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var tableView: UITableView!
@IBOutlet var typeSwitch: UISegmentedControl!
@IBOutlet var searchBar: UITextField!
var timeoutTracker = 0
var items: [String] = []
var count = 1
func searchCall() {
Alamofire.request("http://www.plex.dev/api/search/" + type + "/" + searchBar.text!).responseJSON { response in
debugPrint(response)
if response.response == nil {
self.timeoutTracker = self.timeoutTracker + 1
if self.timeoutTracker == 5 {
self.timeoutTracker = 0
self.popUp()
}
else {
sleep(2)
self.searchCall()
}
}
if let json = response.result.value {
let jsonTest = JSON(json)
for x in jsonTest["results"] {
if let title = x.1["title"].string {
self.items.append(title)
self.tableView.delegate = self
self.tableView.dataSource = self
self.tableView.reloadData()
}
}
}
}
}
func tableView(_ tableView:UITableView, numberOfRowsInSection section:Int) -> Int
{
return self.items.count
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int
{
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
var cell = self.tableView.dequeueReusableCell(withIdentifier: "cell")! as! MovieCell
cell.movieTitle?.text = self.items[indexPath.row]
cell.moviePoster?.image = #imageLiteral(resourceName: "avatar.png")
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print("You selected cell #\(indexPath.row)!")
}
カスタムセルクラスは
import UIKit
class MovieCell: UITableViewCell {
@IBOutlet var moviePoster: UIImageView!
@IBOutlet var movieTitle: UILabel!
@IBAction func addMovie(_ sender: AnyObject) {
}
}
ここ
そして、ここでは私の空白のテーブルビューであります明らかな何か、しかしどちらかの方法で助けてくれてありがとう!
EDIT:「セル」以外の何かに私の識別子を変更することが
私はそれを呼び出していると私も()のviewDidLoadでそれらの両方を持っているにコンセントを接続していません。何らかの理由で問題になった場合に備えて、もう一度追加しましたが、何も変更されませんでした。 –
それらを関数から削除して、viewDidLoad()でのみ保持してください。あなたのデータソースコードは問題ないようです。コードにいくつかのブレークポイントを追加して、必要なすべてのデータをロードした後にtableViewが更新されているかどうかを確認し、項目[indexPath.row]をチェックしてNSLogを使用して実際に値が – John
編集しても何も変わっていないようです。私はチェックし、tableview関数は、forループのすべてのインクリメントで呼び出されている –