Используйте указанную c UITableViewCellStyle ячейку в tableView и удалите их из очереди - PullRequest
1 голос
/ 19 марта 2020

Я пытаюсь распечатать подробные текстовые метки своих ячеек под заголовком ячейки. Вот весь мой код, у меня нет ошибок при запуске, подробный ярлык просто не появляется. Я пробовал решения с других форумов, включая этот, ничего не получалось. Я действительно не уверен, почему это происходит? может быть, это что-то в моей функции cellForRowAt

class LoginController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return discussionTitles.count
    }
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "contactCell", for: indexPath)
        cell.backgroundColor = UIColor.clear
        cell.textLabel?.text = discussionTitles[indexPath.row]
        cell.detailTextLabel?.text = discussionDescriptions[indexPath.row]
        return cell
    }
    func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
        return "Discussion Board"
    }


    override func viewDidLoad() {
        super.viewDidLoad()
        self.hideKeyboardWhenTap()
        view.backgroundColor = UIColor(red: 203/255, green: 215/255, blue: 242/255, alpha: 1.0)
        discussionBoardView.register(UITableViewCell.self, forCellReuseIdentifier: "contactCell")
        setupDiscussionBoard()

    }



    func setupDiscussionBoard() {
        view.addSubview(discussionBoardView)
        discussionBoardView.backgroundColor = UIColor(red: 203/255, green: 215/255, blue: 242/255, alpha: 1.0)
        discussionBoardView.dataSource = self
        discussionBoardView.delegate = self
        discussionBoardView.translatesAutoresizingMaskIntoConstraints = false
        discussionBoardView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
        discussionBoardView.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
        discussionBoardView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
        discussionBoardView.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
    }

}

1 Ответ

0 голосов
/ 19 марта 2020

Это потому, что вы не определили стиль UITableViewCell и по умолчанию он использует ячейку стиля по умолчанию, которая состоит только из titleLabel.

Для другого стиля UITableViewCell вы должны указать этот стиль явно. Вы можете добиться этого поведения, используя следующий код в cellForRowAt:IndexPath для создания экземпляра ячейки.

var cell: UITableViewCell
if let dequeuedCell = tableView.dequeueReusableCell(withIdentifier: "contactCell") as? UITableViewCell {
    cell = dequeuedCell
} else {
    cell = UITableViewCell(style: .subtitle, reuseIdentifier: "contactCell")
}

Это выведет ячейку с descriptionLabel согласно вашему требованию.

Примечание : Также удалите строку ниже, которую вы написали в viewDidLoad, чтобы зарегистрировать UITableViewCell, поскольку он также регистрирует UITableViewCell со стилем по умолчанию, поскольку он вообще не требуется .

discussionBoardView.register(UITableViewCell.self, forCellReuseIdentifier: "contactCell")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...