Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Mensagem de erro ao utilizar o Delegate na Controller

Boa noite!

Gostaria de entender o por quê extender o protocolo AddAMealDelegate gerar erro na classe UIViewController?

Type 'ViewController' does not conform to protocol 'AddAMealDelegate'

Obrigado!

6 respostas

Fala aí Rodrigo, blz?

O AddAMealDelegate é um Protocol (que são análogos a interfaces).

Sendo um protocolo você não extende ele, você o implementa.

Quando você fez seu UIViewController implementar (entrar em conforme com o protocolo) você implementou os métodos declarados na protocolo AddAMealDelegate na classe UIViewController?

Opa, Fernando, beleza e vc?

Eu implementei, igual a realizamos na TableController:

class ViewController: UIViewController, AddAMealDelegate

Como eu poderia utilizar o um protocolo na ViewController?

solução!

Blz,

Você precisa declarar os métodos do AddAMealDelegate dentro da sua classe ViewController.

Se estiver com dúvida de como fazer isso, me manda a suas classes ViewController e AddAMealDelegate que te explico diretamente com o seu código.

Vdd! Com a continuidade do curso eu vi isto. Falha minha msm. Com a implementação da função do protocolo na Controller, funcionou!

Obrigado! =)

Opa, precisando é só mandar as dúvidas.

Bons estudos!

Estou tendo um erro com delegate!.add(meal:Meal) . O resto esta funcionando.

https://twitter.com/vero__tietando/status/914145733825179656 ``` insira seu código aqui class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet var nameField: UITextField? @IBOutlet var happinessField: UITextField? var delegate:AddAMealDelegate?

var items = [ item(name: "Chocolate Brownie", calories: 10), item(name: "Zuccchini Lazanha", calories: 90), item(name: "Salsicha", calories: 15), item(name: "Pizza", calories: 100), item(name: "Lazanha", calories: 800), ]

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

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let row = indexPath.row let item = items[row] let cell = UITableViewCell(style:UITableViewCellStyle.default,reuseIdentifier: nil) cell.textLabel?.text = item.name return cell }

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let cell = tableView.cellForRow(at: indexPath) if cell == nil { return } cell!.accessoryType = UITableViewCellAccessoryType.checkmark }

@IBAction func add() {

if nameField == nil || happinessField == nil{ return }

let name:String = nameField!.text! let happiness:Int = Int(happinessField!.text!)!

let meal = Meal(name: name,happiness: happiness) print("eaten: (meal.name) (meal.happiness)!")

if (delegate == nil){ return } delegate!.add(meal:Meal)

if let navigation = self.navigationController{ navigation.popViewController(animated: true) }