Array不会在Swift中附加多个对象

时间:2016-04-11 17:36:35

标签: ios arrays swift

我正在尝试初始化,然后通过委托func将Class对象追加到数组。 Delegate Double来自按下按钮并带有一些数据。

这里的问题是我试图在TableViewCell上显示数组,但它根本没有显示,我猜主要的问题是expenseArray值是1并且它不是堆叠而是用其他值替换相同的数组。听到你的想法真的很高兴。

P.S cellForRowAtIndexPath没有被调用。

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
 }

对象类:

class SpendedMoneyObject {
var moneySpent: Double
var currentTime = NSDate().toShortTimeString()
var date: String

init(moneySpent: Double) {
    self.date = currentTime
    self.moneySpent = moneySpent

}}

添加委托协议:

protocol ExpensesEnteredDelegate {
func setExpenses(expensesFromMainView: Double)
}

class MainViewController: UIViewController {

@IBOutlet weak var moneyTextField: UITextField!

var delegate: ExpensesEnteredDelegate? = nil


override func viewDidLoad() {
    super.viewDidLoad()    
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func spentButton(sender: AnyObject) {


    // Defining ExpensesVC
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let newExpensesVC = storyboard.instantiateViewControllerWithIdentifier("ExpensesTableView") as! ExpensesTableViewController
    delegate = newExpensesVC

    // Delegating expenses Double value
    if (delegate != nil) {
       let myDouble = Double(moneyTextField.text!)
        let expenses: Double = myDouble!
        delegate!.setExpenses(expenses)
    }
}}

编辑:数组的问题是,每次按下按钮都会创建新的VC,所以我将它从按钮功能移到了ViewDidLoad()

override func viewDidLoad() {
    super.viewDidLoad()
    // Defining ExpensesVC
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let newExpensesVC = storyboard.instantiateViewControllerWithIdentifier("ExpensesTableView") as! ExpensesTableViewController
    delegate = newExpensesVC

}

现在我有另一个问题,当我在模拟器中打开我的TableView视图时,所有数组值都设置为0.无法理解为什么。我正在使用Tab Bar Controller从view到tableView

0 个答案:

没有答案