2016-03-21 75 views
-2

我想將我的數字循環到uitableviewcell中,並將所有值從最高編號打印到最低值,並將它們打印在每個單元格中。我發佈了完整的代碼。請參閱cell.text輸出。這是我的代碼:循環在uitableviewcell中減少的數字

import UIKit 

class tableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    @IBOutlet var tableView: UITableView! 


    var arr = [Int]() 
    var cell:tableCell! 
    var Payment: float_t! = 59600 
    var years1: float_t! = //15 * 12 = 180 
    var monthlyPayment: float_t! = 471 
    var interest: float_t! = 5% 
    var principal: float_t! = 222 
    var interstate: float_t! = 249 
    var initil: float_t! 
    var data = Array<float_t>() 
    var data2: NSMutableArray = [] 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     let c = Int(years1) 
     arr += 0...c 

     tableCalculation() 


      let nib = UINib(nibName: "table", bundle: nil) 
      tableView.registerNib(nib, forCellReuseIdentifier: "cell") 



    } 

    func tableCalculation() { 

     let years = Int(years1) 
     initil = TPayment - 0 

     for i in 0..<years { 


       initil = initil - principil 

       interest = initil * interestrate 



       principil = monthlyPayment - interest 

       print("Month : \(monthlyPayment), principil: \(principil),interest: \(interest), initi: \(initil)") 
       self.data2 = [initil] 


     } 

    } 

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     return arr.count 
    } 



    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell  { 

     cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! tableCell 
     cell.lbl1.text = "\(arr[indexPath.row])" 

     cell.lbl2.text = currencyFormatter(monthlyPayment) 
     cell.lbl3.text = currencyFormatter(interest) 
     cell.lbl4.text = currencyFormatter(principil) 
     cell.lbl5.text = "\(self.data2[indexPath.row % data2.count])" 

     return cell 

    } 

    // 4 
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 
     print("Row \(indexPath.row) selected") 
    } 

    // 5 
    func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 70 
    } 

    func currencyFormatter(Price: float_t) ->String { 

     let currencyFormatter = NSNumberFormatter() 
     currencyFormatter.usesGroupingSeparator = true 
     currencyFormatter.numberStyle = NSNumberFormatterStyle.DecimalStyle 
     // localize to your grouping and decimal separator 
     let numberOfPlaces: float_t = 1.0 
     let multiplier: float_t = pow(10.0, numberOfPlaces) 
     let num = Price 
     let rounded = round(num * multiplier)/multiplier 
     let priceString = currencyFormatter.stringFromNumber(rounded) 

     return priceString! 
    }  
} 

此代碼總是給我的環路的所有值的最後一個數字,我想改變它從第一值寫入到最後一個的每一個細胞。

+1

你不能那樣做。根據屏幕上哪些行可見,表視圖根據它所選的順序調用'cellForRowAtIndexPath'。您可以將計算存儲在數組中,並將內容顯示在「cellForRowAtIndexPath」中。 – Michael

+1

'if'語句有什麼意義? '初始'將永遠等於自己。 – rmaddy

回答

3

歡迎來到SO。你的問題和你的代碼都沒有任何意義。

它在我看來像你不知道如何使用表視圖。

您需要設置一個數據模型(通常是一個數組),該數據模型保存表視圖的數據。然後,在調用cellForRowAtIndexPath方法時,查看請求中的行(或行和部分),獲取該行的數據(或分節表視圖的行&部分),並使用該數據配置一個單元返回。

0

試試這樣說:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {   
    cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as! tableCell   
    cell.lbl5.text = "\(initial - indexPath.row*225)" //subtracts each consecutive row by a higher multiple of 225.  
    return cell   
} 

你要明白,cellForRow:atIndexPath是可以被UIKit框架稱爲一個UITableView數據源的方法。它在tableview被加載時根據段的數量(由另一個數據源方法指定)以及每個段中的行數(也由另一個數據源方法指定)被調用。

+0

'initial - indexPath.row'完全不是OP在每個單元中想要的。 – rmaddy

+0

他的問題說「打印所有的數值從最高的數字到最低的數字」 - 是不是這樣做? –

+0

看看OP發佈的代碼。我認爲每行將從最初的餘額開始,然後按月付款。該OP不太清楚,但它肯定不意味着你的答案中顯示每行減1。 – rmaddy

0

下面是表格視圖的工作方式,就像鄧肯說的你需要知道的一樣。

/*We need to subclass UITableViewDataSource and UITableViewDelegate 
    so we gain access to tableView methods. Don't forget to link your 
    tableView in the storyboard to the delegate and datasource!*/ 

class controller: UIViewController, UITableViewDataSource, UITableViewDelegate { 

    //1: Model. All the data you're gonna use for your table view 
    var data = Array<String>() 

    override func viewDidLoad() { 
     //1: Populate model with some data when the view loads. 
     self.data = ["Oranges", "Apples", "Bananas", "Grapes"] 
    } 

    //2: Number of rows in table view. This determines how many times #3 is called (below). 
    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
     //We want the table view to have all the items in variable `data`. So, we need to have as many cells as the number of items in `data` 
     return data.count 
    } 


    //3: This is called for each cell. It lets you customise each cell how you want. 
    //For us, we'll make the text inside the cell the current item in the `data` array 
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     //Get the cell from the tableView. Use the identifier you've specified in the storyboard. 
     let cell = tableView.dequeueReusableCellWithIdentifier("myCellIdentifier", forIndexPath: indexPath) 
     //Set the text as the current item in `data` 
     cell.textLabel?.text = data[indexPath.row] 
     //Use this cell we've just created for the current row 
     return cell 
    } 

} 
+0

VAR數據=陣列() 然後添加「自我。數據= [初始]「在環路 cell.lbl5.text =‘\(數據[indexPath.row])’ 這種方法得到我錯誤‘致命錯誤:數組索引超出範圍’ –