1
resposta

Problema com os checkmarks

na parte de selecionar e voltar o que coloquei no print vai, mas o check azulzinho que era pra ficar, não fica e o meu código tá igual do instrutor... segue meu código abaixo

// // ViewController.swift // eggplant-brownie // // Created by sara.batista.d.felix on 21/04/21. // Copyright © 2021 Alura. All rights reserved. //

import UIKit

protocol AdicionaRefeicaoDelegate { func add (_ refeicao: Refeicao) }

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

// Mark: - Atributos

var delegate: AdicionaRefeicaoDelegate?
var itens: [String] = ["Molho de tomate", "Queijo", "Molho apimentado", "Manjericão"]

// Mark: - IBOutlets

@IBOutlet weak var nomeTextField: UITextField?

@IBOutlet weak var felicidadeTextField: UITextField?

// Mark: - UITableViewDataSource

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let celula = UITableViewCell(style: .default, reuseIdentifier: nil)

    let linhaDaTabela = indexPath.row
    let item = itens[linhaDaTabela]

    celula.textLabel?.text = item

    return celula
}

// Mark: - UITableViewDelegate

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    guard let celula = tableView.cellForRow(at: indexPath) else { return }
    celula.accessoryType = .checkmark

    if celula.accessoryType == .none{
        celula.accessoryType = .checkmark
    } else {
        celula.accessoryType = .none
    }
}

// Mark: - IBActions

@IBAction func adicionar(_ sender: Any) {

    guard let nomeDaRefeicao = nomeTextField?.text else {
        return
    }

    guard let felicidadeDaRefeicao = felicidadeTextField?.text, let felicidade = Int(felicidadeDaRefeicao) else {
        return
    }

    let refeicao = Refeicao(nome: nomeDaRefeicao, felicidade: felicidade)

    print("comi \(refeicao.nome) e fiquei com felicidade: \(refeicao.felicidade)")

    delegate?.add(refeicao)
    navigationController?.popViewController(animated: true)
}

}

1 resposta

Oi Sara, tudo bem?

Primeiramente, desculpe a demora para responder!

Provavelmente você já até descobriu o erro, mas o que acontece é que você deixou como checkmark fora da verificação, fazendo com que a célula sempre fique marcada:

celula.accessoryType = .checkmark

if celula.accessoryType == .none{
    celula.accessoryType = .checkmark
} else {
    celula.accessoryType = .none
}

Você precisa remover essa primeira linha e deixar apenas a verificação:

if celula.accessoryType == .none {
    celula.accessoryType = .checkmark
} else {
    celula.accessoryType = .none
}

Certo? Espero ter ajudado, abraços =)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software