Ho scoperto come passare i dati tra le viste con i delegati in altre situazioni, ma questo mi ostacola.Come utilizzare i delegati per comunicare i dati da una cella personalizzata a un'etichetta nella visualizzazione genitore
In questo esempio sto cercando di inviare i dati risultanti dalla pressione di un pulsante, fino all'etichetta utilizzando un modello delegato ma senza esito positivo. La mia ipotesi è che mi manca qualcosa di fondamentale qui e non ho trovato esempi che trattino i delegati in questo modo.
//
// ViewController.swift
// TableCellDelegate
//
// Created by Chris Cantley on 6/1/15.
// Copyright (c) 2015 Chris Cantley. All rights reserved.
//
import UIKit
class ViewController: UIViewController, CellInfoDelegate {
var cellViewController = CellViewController()
//The place to put the number into.
@IBOutlet weak var sumLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
cellViewController.delegate = self
}
//2)...to here.
func processThatNumber(theNumber: Int) {
println("out : \(theNumber)")
}
}
// Table View delegates
extension ViewController: UITableViewDataSource, UITableViewDelegate
{
//One row
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
// Load custom cell
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("thisCustomCell", forIndexPath: indexPath) as! CellViewController
return cell
}
}
//-------------------- Protocol for Delegate -----------------------
protocol CellInfoDelegate {
func processThatNumber(theNumber: Int)
}
//-------------------- Cell to Pass info to Parent -----------------------
class CellViewController: UITableViewCell{
var sumNumber: Int = 0
var delegate: CellInfoDelegate?
@IBAction func addButton(sender: AnyObject) {
// increment that number
self.sumNumber += 5
//1) I want to get it from here...... but delegate ends up nil
if let delegate = self.delegate {
delegate.processThatNumber(self.sumNumber)
}
//Shows that the number is incrementing
println(sumNumber)
}
}
Il ViewController e CellViewController sono collegati alle rispettive classi
Grazie in anticipo.
GRAZIE! se capisco correttamente il ragionamento, è perché è qui che la cella viene istanziata e questo crea una connessione al genitore per ogni cella? –
Ciò è corretto. –
Questo collega il mio divario nella comprensione dei delegati. Grazie ancora. –