質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.92%

【Swift】TableViewが表示されない。func tableViewが機能していない。

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 564

TableViewにカスタムセルを出力したいのですがうまくいきません。
func tableView{}のなかにあるprint("purchaseItemArray\(purchaseItemArray)")が出力されていなかったので、そもそもfunc tabeleView{ } がうまく機能していないのではと踏んでいます。

どのように対処すべきでしょうか?

//
//  ContainerBuyViewController.swift
//  SoundKnowledge
//
//  Created by 綱島将人 on 2018/02/20.
//  Copyright © 2018年 ONER. All rights reserved.
//

import UIKit
import NCMB

class ContainerBuyViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {


    @IBOutlet weak var tableView: UITableView!

    //tableviewに出力するセルデータを保存するarray
    var itemArray : NSArray = NSArray()

    //購入したデータを特定するために使用するobjectIdを保存するarray
    var purchaseObjectId: NSArray = NSArray()
    var purchaseItemArray: NSArray = NSArray()


    let Fav = "Fav.png"
    let NotFav = "NotFav.png"


    let currentUser = NCMBUser.current()

    override func viewDidLoad() {
        super.viewDidLoad()
        loadItemData()
        print("purchseItemData:\(purchaseItemArray)")
        DispatchQueue.main.async{self.tableView.dataSource = self
            self.tableView.delegate = self
        // Do any additional setup after loading the view.

        self.tableView.reloadData()
        }}

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    func loadItemData(){
        let query = NCMBQuery(className: "user")
        query?.whereKey("userName", equalTo: currentUser!.userName)
        query?.findObjectsInBackground({ (objects, error) in
            if error != nil{
                print("ユーザー購入アイテム情報の取得に失敗しました")
            }else{
                let object = objects![0] as! NCMBObject
                self.purchaseObjectId = object.object(forKey: "account_purchase") as! NSArray
                print("成功はしているんだよね")
                print("purchaseObjectId:\(self.purchaseObjectId)")
                let query2: NCMBQuery = NCMBQuery(className: "itemClass")

                query2.whereKey("objectId",equalTo:self.purchaseObjectId[0])
                query2.findObjectsInBackground({(object, error) in
                    self.purchaseItemArray = object! as NSArray

                    print("purchaseItemArray:\(self.purchaseItemArray)")
                    print(self.purchaseItemArray.count)
            }
        )}

      })
    }




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

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


    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier:"BuyCell", for: indexPath) as! ContainerBuyTableViewCell
        let targetItemData: AnyObject = self.purchaseItemArray[indexPath.row] as
        AnyObject

        print("purchaseItemArray2:\(purchaseItemArray)")

        cell.CellTitle?.text! = (targetItemData.object(forKey: "item_title")as? String)!
        cell.CellSpeaker?.text! = (targetItemData.object(forKey: "item_price")as? String)!
        //cell.SpeakerImage = targetItemData.object(forKey: "thumbnail") as! UIImageView
        //favの動きをどのようにするか?
        cell.setCell()
        return cell
    }


    @IBAction func FavButton(_ sender: Any){
        let button = sender as! UIButton
        let cell = button.superview?.superview as! ContainerBuyTableViewCell

        if (cell.count % 2 == 0){
            cell.FavImage.image = UIImage(named: NotFav)
            cell.count += 1
        }else{
            cell.FavImage.image = UIImage(named: Fav)
            cell.count += 1
        }
    }


}

ご回答いただけますと幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • MasakiHori

    2018/03/01 19:57

    numberOfSections(in:) , tableView(_: numberOfRowsInSection:)にもログ出力を。これらの方が先に呼ばれます。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/03/02 18:53

    return purchaseItemArray.countの上に、print("purchaseItemArray.count:",purchaseItemArray.count)。データが認識されてるなら個数がカウントされる。

    キャンセル

  • MasatoTunashima

    2018/03/06 18:54

    ありがとうございます!アドバイス参考にして解決できそうです。

    キャンセル

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.92%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る