我是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编程的新手,所以我不知道如何解决这个问题。
我很感激你以这种方式提供的帮助
答案 0 :(得分:0)
在运行时,您的sortedKeys
数组中没有任何值。它只是初始化为Int
类型的空数组。只有在调用calculateTapped()
方法后才设置为填充。因此,numberOfRowsInSection
不会为表格视图返回有效行数,因为sortedKeys.count
会返回0
。