2016-04-11 9 views
0

初期化してから、クラスオブジェクトをdelegate funcを介して配列に追加しようとしています。デリゲートダブルは、いくつかのデータを含むボタンを押すことから来ます。配列が重なっていませんクラスオブジェクト

var expensesArray = [SpendedMoneyObject]() 
var delegatedDouble:Double = 0.0 

func setExpenses(expensesFromMainView: Double) { 
    delegatedDouble = expensesFromMainView 
    var aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble) 
    expensesArray += [aSpendedMoneyObject] 
    self.tableView.reloadData() 
} 

ここでの問題は、私はTableViewCellで配列を表示しようとしていますが、それは私が主な問題は、expensesArray値が1であることであり、それは他の値と同じ配列を積み重ねが、交換していないと思い、まったく表示しないことです。あなたの考えを聞いて本当にうれしいです。

編集: 私は.appendを試しましたが、それでもTableView func 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 
} 

Objectクラス:

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

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

}} 

編集:私は今newVC私はボタンをクリックするたびに作成されたspendButtonのFUNCから新しいのViewControllerの作成を移動することによって、複数のアレイを追加することができます。ここでは、コードに編集されています

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) 
    } 


}} 

しかし、まだ配列のデータはにtableViewに

+2

を試してみてください: "前方のおかげでは、" 本物ではありません!文法的に正しい "事前に感謝"を考えているかもしれませんが、 "あらかじめ"感謝することは多くの文化においても失礼だと考えられています。あなたの質問にちょうど答えたら、あなたは人々に感謝します。 :) – Moritz

+0

配列の '+ ='は実際は '.appendContentsOf'メソッドです。これは元のものを置き換えるべきではありません。 'setExpenses'が実際に何回呼び出されたのか、どこから出てくるのかを調べたいと思うかもしれません。 – zcui93

+0

「スタックしているのではなく、置き換えている」ということを理解できません。また、これは 'UITableView'の問題であると思われるので、そのコードも投稿するべきです。より多くのコード==より多くのヘルプ。 – ryantxr

答えて

0

を表示しません。このコード例を試してみてください。

let aSpendedMoneyObject = SpendedMoneyObject(moneySpent: delegatedDouble) 
expensesArray.append(aSpendedMoneyObject) 

それともに探している場合は、.extend()メソッドを使用することができます別の配列の要素を配列に追加します。代わりに

expensesArray += [aSpendedMoneyObject] 

0

ちょうど種類のノート

expensesArray.append(aSpendedMoneyObject) 
関連する問題