我正在尝试使用一个滑动条和一个表视图来制作一个简单的Times表应用程序(用于Swift中的数字1-9)。我正在设法使滑块工作,并为每个数字创建一个数组,该数组是用滑块选定的,尽管该数组显示在控制台上。我不能让数字出现在表格视图上。你能帮我告诉我我缺了什么吗?
以下是我迄今为止写的:
class ViewController: UIViewController, UITableViewDelegate {
@IBOutlet var sliderValue: UISlider!
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 9
}
@IBAction func sliderMoved(sender: UISlider) {
sender.setValue(Float(lroundf(sliderValue.value)), animated: true)
print(sliderValue)
var cellContent = [String]()
for var i = 1; i <= 10; i += 1 {
cellContent.append(String(i * Int(sliderValue.value)))
}
print(cellContent)
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")
cell.textLabel?.text = cellContent[indexPath.row]
return cell
}
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
最佳答案
恐怕你所提供的代码中有很多不太合理的地方。我在上面的评论中提到了其中的一些内容,但您也将类似于tableViewDataSource函数的内容嵌套到了sliderMoved函数中。整个数组看起来相当松散,而且提议的单元格计数实际上没有考虑数组的大小。我想你可能想要这样的东西:
class ViewController: UIViewController, UITableViewDataSource {
@IBOutlet var valueSlider: UISlider!
@IBOutlet var tableView: UITableView!
private var cellContent = [String]()
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
}
@IBAction func sliderMoved(sender: UISlider) {
sender.setValue(Float(lroundf(valueSlider.value)), animated: true)
tableView.reloadData()
}
// TableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 9
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell") // Must exist with the same identifier in your storyboard
cell.textLabel?.text = valueStringForIndex(indexPath.row)
return cell
}
// Private functions
private func valueStringForIndex(index: Int) -> String {
return "\(index * Int(valueSlider.value))"
}
}
关于ios - 无法在简单的Times Table App中显示Table View数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37551805/