チャットリストの表示

roomListにルーム一覧を保存

var dataHelper:DatabaseHelper!
var roomList:[ChatRoom] = []

override func viewDidLoad() {
    ...
    if uid == "" {
        ...
    } else {
        print(uid)
        dataHelper = DatabaseHelper()
        dataHelper.getMyRoomList(result: {
            result in
            self.roomList = result
            self.tableView.reloadData()
        })
    }
}

TableViewにデータを表示する

参考    TableViewの使い方

以前までは、TableViewのセルのレイアウトはデフォルトの物を使用していましたが、今回は、セルの中にパーツを配置しており、カスタマイズされています。

配置したパーツを取得する

タグを指定することで、配置したパーツを操作できるようになります。

let imageView = cell?.viewWithTag(1) as! UIImageView
//円の形に表示します
imageView.layer.cornerRadius = imageView.frame.size.width * 0.5
imageView.clipsToBounds = true

セルの高さを指定する

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 80.0
}

完成したコード

import UIKit

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
    
    @IBOutlet weak var tableView: UITableView!
    
    var dataHelper:DatabaseHelper!
    var roomList:[ChatRoom] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let uid = AuthHelper().uid()
        if uid == "" {
            performSegue(withIdentifier: "login", sender: nil)
        } else {
            print(uid)
            dataHelper = DatabaseHelper()
            dataHelper.getMyRoomList(result: {
                result in
                self.roomList = result
                self.tableView.reloadData()
            })
        }
    }
    
    @IBAction func onLogOut(_ sender: Any) {
        AuthHelper().signout()
        performSegue(withIdentifier: "login", sender: nil)
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return roomList.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cellData = roomList[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
        let imageView = cell?.viewWithTag(1) as! UIImageView
        imageView.layer.cornerRadius = imageView.frame.size.width * 0.5
        imageView.clipsToBounds = true
        dataHelper.getImage(userID: cellData.userID, imageView: imageView)
        let nameLabel = cell?.viewWithTag(2) as! UILabel
        dataHelper.getUserName(userID: cellData.userID, result: {
            name in
            nameLabel.text = name
        })
        return cell!
    }
}

 

コメント

タイトルとURLをコピーしました