我正在尝试使用一个滑动条和一个表视图来制作一个简单的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/

10-10 20:41