como adicionar os itens da lista em exibição de tabela em rápida 5

votos
0

Eu estou tentando adicionar itens a uma exibição de tabela. Eu posso ver que toda vez que eu clicar no botão de novas pastilhas linha na tabela, mas a célula estiver vazia. Quando eu depurar o código que eu possa ver todos os itens na lista, mas não posso vê-los exibidos no próprio app. Os itens 1, 2 e 3 não são exibidos bem

@IBOutlet weak var itemLbl: UITextField!
    var items: [String] = [1, 2, 3]

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.tableFooterView = UIView(frame: CGRect.zero)


    }

func insertItem(){
    items.append(itemLbl.text!)

    let indexPath = IndexPath(row: items.count - 1,section: 0 )
    tableView.beginUpdates()
    tableView.insertRows(at: [indexPath], with: .automatic)
    tableView.endUpdates()
    itemLbl.text = 
    view.endEditing(true)
}

Assim, a inserção faz o trabalho, mas eu simplesmente não pode exibir o texto na tabela. Eu recebo uma nova célula para cada item que eu acrescentar, mas seu espaço vazio, apenas branco, em vez do valor que acabou de adicionar

EDITAR:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let itemLbl  =  items[indexPath.row]
        let cell = tableView.dequeueReusableCell(withIdentifier: ItemCell) as! ItemCell

        cell.itemLbl.text = itemLbl
        return cell
    }
Publicado 02/12/2019 em 23:56
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

Você já tentou usar tableView.reloadData()? Além disso, não forçar desembrulhar itemLabel.text.

func insertItem(){
    if let itemText = itemLabel.text {
       items.append(itemText)

       tableView.reloadData()
    }
}

Certifique-se também adicionar tableView.reloadData()no final viewDidLoad().

Respondeu 03/12/2019 em 00:16
fonte usuário

votos
1

É melhor para recarregar a tabela sempre que a sua fonte de dados muda, o que você pode fazer assim:

var items: [String] = ["1", "2", "3"] {
    didSet {
        tableView.reloadData()
    }
}

func insertItem(){
    if let text = itemLbl.text { 
        items.append(itemLbl.text)
    }
}
Respondeu 03/12/2019 em 00:54
fonte usuário

votos
0

Existem várias possibilidades que poderiam causar este problema. A primeira coisa que você deve verificar é que, em sua lista, certifique-se que você está usando um identificador de reutilização para o protótipo de célula e que você está fazendo referência a ele. Além disso, certifique-se de recarregar a mesa sempre que você adicionar um elemento (não constantemente fazê-lo como ele irá drenar a bateria do usuário). Se nenhum destes estão trabalhando, é possível que você não conectar as tomadas corretamente.

Respondeu 03/12/2019 em 02:24
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more