Мой label.text ноль с многоразовой библиотекой в ​​swift - PullRequest
1 голос
/ 16 января 2020

Я пытаюсь показать ярлык с содержанием "aaaaaaaaaaaaaaaaA". Я использую многоразовую библиотеку. Несмотря на то, что я правильно подключил IBOutlet, метка и imageView ячейки не отображали содержимое.

Это мой класс ячейки

import UIKit
import Reusable
import SDWebImage

protocol ChooseMemberTableViewCellDelegate: AnyObject {
    func addUserToGroup(forUser user: User)
}

class ChooseMemberTableViewCell: UITableViewCell, Reusable {

    @IBOutlet weak var userImageView: UIImageView!
    @IBOutlet weak var userNameLabel: UILabel!

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

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

    }

    func setupCell(data: User) {
        userNameLabel?.text = "aaaaaaaaaaaaaaaaA"
//        userNameLabel?.text = "\(data.userName)"
//        let url = URL(string: data.image)
//        userImageView.sd_setImage(with: url ?? "", completed: nil)
    }
}

Это мой ViewController, в котором я регистрирую ячейку

//
//  MembersViewController.swift
//  Message
//
//  Created by Minh Tâm on 1/9/20.
//  Copyright © 2020 Minh Tâm. All rights reserved.
//

import UIKit
import Firebase
import Reusable
import Then

private enum Constants {
    static let numberOfSection = 1
    static let heightForRows: CGFloat = 60
}

final class ChooseMembersViewController: UIViewController {

    @IBOutlet private weak var searchMembers: UISearchBar!
    @IBOutlet private weak var listContacts: UITableView!

    var searchUser = [User]()
    private let database = Firestore.firestore()
    var users = [User]()
    private var currentUser = Auth.auth().currentUser
    private var roomRepository = RoomRepository()
    private var userRepository = UserRepository()

    var groupName: String?
    private var selectUserArray = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()
//        userRepository.fetchUser()
        configListTableView()
        fetchUser()

    }

    func configListTableView() {
        listContacts.do {
            $0.register(cellType: ChooseMemberTableViewCell.self)
            $0.delegate = self
            $0.dataSource = self
        }
    }

    public func fetchUser() {
        database.collection("users").getDocuments(){ (querySnapshot, err) in
            if let err = err {
                print("Error getting documents: \(err)")
            } else {
                if let snapshot = querySnapshot {
                    for document in snapshot.documents {
                        let data = document.data()
                        let uid = data["uid"] as? String ?? ""
                        if uid != self.currentUser?.uid {
                            let newUser = User.map(uid: uid, dictionary: data)
                            self.users.append(newUser)
                        }
                    }
                }
                self.searchUser = self.users

                self.listContacts.reloadData()
            }
        }
    }

    @IBAction func handleBack(_ sender: UIButton) {
        self.dismiss(animated: false)
    }

    @IBAction func handleDone(_ sender: UIButton) {
        guard let currentUser = currentUser, let groupName = groupName else { return }
        selectUserArray.append(currentUser.uid)
        let time = NSNumber(value: Int(NSDate().timeIntervalSince1970))
        roomRepository.updateFirebase(groupName: groupName, time: time, selectUserArray: selectUserArray)
    }

}

extension ChooseMembersViewController: UISearchBarDelegate {
    func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
        if searchText.isEmpty {
            searchUser = users
        } else {
            searchUser = users.filter { $0.userName.lowercased().contains(searchText.lowercased()) }
        }
        listContacts.reloadData()
    }
}

extension ChooseMembersViewController: UITableViewDelegate, UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return Constants.numberOfSection
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = listContacts.dequeueReusableCell(for: indexPath, cellType: ChooseMemberTableViewCell.self).then {
            let user = searchUser[indexPath.row]
            $0.setupCell(data: user)
        }
        return cell
    }

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

extension ChooseMembersViewController: ChooseMemberTableViewCellDelegate {
    func addUserToGroup(forUser user: User) {
        let selectedUserUid = user.uid
        selectUserArray.append(selectedUserUid)
    }
}

Ячейка не показывает информацию метки и imageView

1 Ответ

0 голосов
/ 16 января 2020
  1. ChooseMemberTableViewCell правильно, но я бы рекомендовал использовать userNameLabel.text = "aaaaaaaaaaaaaaaaA" (не обязательно для userNameLabel)

  2. Если вы используете ячейку из раскадровки в ваш tableView - нет необходимости , чтобы зарегистрировать этот, UIStoryboard уже автоматически регистрирует свои ячейки. Я имею в виду, вы должны удалить эту строку: listContacts.register(cellType: ChooseMemberTableViewCell.self)

  3. Вы должны добавить идентификатор ChooseMemberTableViewCell для ячейки в раскадровке enter image description here

  4. Это должно работать на cellForRowAt:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: ChooseMemberTableViewCell = tableView.dequeueReusableCell(for: indexPath) cell.setupCell(data: user) .then { let user = searchUser[indexPath.row] $0.setupCell(data: user) } return cell }

Я думаю, это все , Я сделал это, и я вижу ярлык с текстом в tableView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...