Swift viewController numberOfRowsInSection问题

时间:2015-03-24 21:03:46

标签: ios swift

我是swift的新手,从http://www.raywenderlich.com的教程中学习..

我写过这个控制器:

import UIKit

class ViewController: UIViewController, UITableViewDataSource {

@IBOutlet var totalTextField : UITextField!
@IBOutlet var taxPctSlider : UISlider!
@IBOutlet var taxPctLabel : UILabel!
@IBOutlet var resultsTextView : UITextView!
let tipCalc = TipCalculatorModel(total: 33.25, taxPct: 0.06)
var possibleTips = Dictionary<Int, (tipAmt:Double, total:Double)>()
var sortedKeys:[Int] = []
@IBOutlet weak var tableView: UITableView!

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

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

func refreshUI() {
    totalTextField.text = String(format: "%0.2f", tipCalc.total)
    taxPctSlider.value = Float(tipCalc.taxPct) * 100.0
    taxPctLabel.text = "Tax Percentage (\(Int(taxPctSlider.value))%"
}

@IBAction func calculateTapped(sender : AnyObject) {
    tipCalc.total = Double((totalTextField.text as NSString).doubleValue)
    possibleTips = tipCalc.returnPossibleTips()
    sortedKeys = sorted(Array(possibleTips.keys))
    tableView.reloadData()
}

@IBAction func taxPercentageChanged(sender: AnyObject) {
    tipCalc.taxPct = Double(taxPctSlider.value) / 100
    refreshUI()
}

@IBAction func viewTapped(sender: AnyObject) {
    totalTextField.resignFirstResponder()
}

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

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: UITableViewCellStyle.Value2, reuseIdentifier: nil)
    let tipPct = sortedKeys[indexPath.row]
    let tipAmt = possibleTips[tipPct]!.tipAmt
    let total = possibleTips[tipPct]!.total

    cell.textLabel?.text = "\(tipPct)%:"
    cell.detailTextLabel?.text = String(format: "Tip: $%0.2f, Total: $%0.2f", tipAmt, total)
    return cell
}


}

当我尝试运行此应用程序时,出现下一个错误:

-[UIView tableView:numberOfRowsInSection:]: unrecognized selector sent to instance

不幸的是,我是这种编程语言和iphone编程的新手,所以我不知道如何解决这个问题。

我很感激你以这种方式提供的帮助

1 个答案:

答案 0 :(得分:0)

在运行时,您的sortedKeys数组中没有任何值。它只是初始化为Int类型的空数组。只有在调用calculateTapped()方法后才设置为填充。因此,numberOfRowsInSection不会为表格视图返回有效行数,因为sortedKeys.count会返回0