Заполните метки ячеек UITableView вручную - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь заполнить метки ячейки UITableView.

Моя проблема в том, что он просто заполняет первую ячейку. Это то, что я получил до сих пор (три ячейки должны быть заполнены, но только первая -)

import UIKit

class StatsViewController: UITableViewController {

   var vc = ViewController()


    override func viewDidLoad() {
        super.viewDidLoad()
       // tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
       // tableView.reloadData()
        //tableView.delegate = self

    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 5
    }
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) //ACHTUNG: "ListItem" ist der Name meiner Zelle
        let cell2 = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath)
        let cell3 = tableView.dequeueReusableCell(withIdentifier: "cell3", for: indexPath)
        let cell4 = tableView.dequeueReusableCell(withIdentifier: "cell4", for: indexPath)
        let cell5 = tableView.dequeueReusableCell(withIdentifier: "cell5", for: indexPath)

        if let label = cell.viewWithTag(1000) as? UILabel {
            if indexPath.row == 0{
                label.text = "*** Quittung ***"
                //label.font = UIFont(name: label.font.fontName, size: 20)
        }
        }
        if let label2 = cell2.viewWithTag(1001) as? UILabel {
                   if indexPath.row == 1{
                       label2.text = "------------------"
               }
        }
        if let label3 = cell3.viewWithTag(1002) as? UILabel {
                   if indexPath.row == 2{
                    label3.text = "*SAEULENNR. 2 " + String( vc.preisProLiter) + "EUR/Liter*"
               }
        }

        return cell
    }
}

Как вы можете видеть: я хочу заполнить 5 ячеек вручную.

В то время как первая ячейка имеет идентификатор «cell», а метка первой ячейки имеет Tag = 1000.

Вторая ячейка имеет идентификатор «cell2», а метка второй ячейки имеет Tag = 1001. И и так далее.

Это скриншот того, как это выглядит сейчас:

Снимок экрана

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 01 апреля 2020

Если вы назначите один и тот же indexPath для нескольких ячеек, iOS переопределит все ячейки и свяжет данный identifier с ячейкой, а затем заполнит его.

Сделайте так

if indexPath.row == 0 {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) 
    //.
    //.
    //.
    return cell
} else if indexPath.row == 1 {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell2", for: indexPath)
    //.
    //.
    //.
    return cell
} else if others 
  //.
  //.
  //.
  //.
} else {

    return UItableViewCell()
}

Плюс, вы можете немного оптимизировать его, приведя ячейки к его типу

let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! TheTypeOfTheCell
cell.yourLabel.text = "*** Quittung ***"
//.
//.
//.
return cell
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...