Ich versuche zu initialisieren und dann Klassenobjekt über Delegate Func an Array anzuhängen. Delegate Double kommt vom Knopfdruck mit einigen Daten.Array stapelt nicht Klassenobjekt
var expensesArray = [SpendedMoneyObject]()
var delegatedDouble:Double = 0.0
func setExpenses(expensesFromMainView: Double) {
delegatedDouble = expensesFromMainView
var aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble)
expensesArray += [aSpendedMoneyObject]
self.tableView.reloadData()
}
Problem hier ist, dass ich versuche, bei TableViewCell zu zeigen Array, aber es gar nicht zeigen, ich denke, Hauptproblem ist, dass expensesArray Wert 1 ist und es ist nicht stapeln, aber gleiche Array mit anderem Wert zu ersetzen . Wird wirklich glücklich sein zu hören, was du denkst.
Edit: Ich versuchte .append und es immer noch das gleiche TableView func cellForRowAtIndexPath wird nicht aufgerufen.
class ExpensesTableViewController: UITableViewController, ExpensesEnteredDelegate{
//MARK : Properties
var expensesArray = [SpendedMoneyObject]()
var delegatedDouble:Double = 0.0
override func viewDidLoad() {
super.viewDidLoad()
}
func setExpenses(expensesFromMainView: Double) {
delegatedDouble = expensesFromMainView
var aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble)
expensesArray.append(aSpendedMoneyObject)
self.tableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return expensesArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellIdentifier = "ExpensesCell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! ExpensesTableViewCell
print("Iam here")
let expense = expensesArray[indexPath.row]
let fromDoubleToString = "\(expense.moneySpent)"
cell.loadItemsToCell(fromDoubleToString, date: expense.date)
return cell
}
Objektklasse:
class SpendedMoneyObject {
var moneySpent: Double
var currentTime = NSDate().toShortTimeString()
var date: String
init(moneySpent: Double) {
self.date = currentTime
self.moneySpent = moneySpent
}}
Edit: Ich kann jetzt mehr als ein Array hinzufügen, indem Sie neue Viewcontroller Schaffung von spendButton func bewegt, die NEWVC wurde die Erstellung jedes Mal i-Taste angeklickt. Hier sind bearbeitet Code:
protocol ExpensesEnteredDelegate {
func setExpenses(expensesFromMainView: Double)
}
class MainViewController: UIViewController {
@IBOutlet weak var moneyTextField: UITextField!
var delegate: ExpensesEnteredDelegate? = nil
override func viewDidLoad() {
super.viewDidLoad()
// Defining ExpensesVC
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let newExpensesVC = storyboard.instantiateViewControllerWithIdentifier("ExpensesTableView") as! ExpensesTableViewController
delegate = newExpensesVC
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func spentButton(sender: AnyObject) {
// Delegating expenses Double value
if (delegate != nil) {
let myDouble = Double(moneyTextField.text!)
let expenses: Double = myDouble!
delegate!.setExpenses(expenses)
}
}}
Aber noch Arrays Daten nicht auf sich zeigt in einem Tableview
nur eine Art Notiz: "Danke in forward" ist nicht eine reale Sache! Sie haben vielleicht eher an "Danke im Voraus" gedacht, was grammatikalisch korrekt ist - aber beachten Sie, dass es in vielen Kulturen auch als unhöflich gilt, "im Voraus" zu danken. Stellen Sie einfach Ihre Frage, Sie werden den Leuten danken, sobald sie geantwortet haben. :) – Moritz
'+ =' of array ist eigentlich nur '.appendContentsOf' Methode, die die ursprüngliche nicht ersetzen sollte. Sie können überprüfen, wie oft "setExpenses" tatsächlich aufgerufen wurde und wo von. – zcui93
Ich verstehe nicht, was Sie mit "es ist nicht stapeln, sondern ersetzen" meinen. Da dies ein Problem mit 'UITableView' zu sein scheint, sollten Sie diesen Code ebenfalls posten. Mehr Code == mehr Hilfe. – ryantxr