初期化してから、クラスオブジェクトを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に
を試してみてください: "前方のおかげでは、" 本物ではありません!文法的に正しい "事前に感謝"を考えているかもしれませんが、 "あらかじめ"感謝することは多くの文化においても失礼だと考えられています。あなたの質問にちょうど答えたら、あなたは人々に感謝します。 :) – Moritz
配列の '+ ='は実際は '.appendContentsOf'メソッドです。これは元のものを置き換えるべきではありません。 'setExpenses'が実際に何回呼び出されたのか、どこから出てくるのかを調べたいと思うかもしれません。 – zcui93
「スタックしているのではなく、置き換えている」ということを理解できません。また、これは 'UITableView'の問題であると思われるので、そのコードも投稿するべきです。より多くのコード==より多くのヘルプ。 – ryantxr