xcode 有一个按钮可以更改表中的内容(swift)

4jb9z9bj  于 2022-11-17  发布在  Swift
关注(0)|答案(1)|浏览(133)

(Very初学者用户btw.我尽力解释)
我有一个文本框,一个按钮和一个表格。在应用程序中,你在框中输入一个数字,然后按下按钮,表格应该填充10行,输入的数字乘以行号。
这是我目前得到的代码。

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
    @IBOutlet weak var inputText: UITextField!
    
    @IBAction func goButton(_ sender: Any) {

        let input: Int? = Int(inputText.text!)

        // should the multiplication happen here or in the tableView func??
        // let result: Int? = INDEX OF ROW * input!

        //table values should change when button is pressed
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  
        let aCell = tableView.dequeueReusableCell(withIdentifier: "aCell", for: indexPath)
        var content = UIListContentConfiguration.cell()

        // content = result

        aCell.contentConfiguration = content
        return aCell
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

}

如何将按钮链接到表,以便当用户将数字放入框中然后按下按钮时,表中的值将发生变化?

ljsrvy3e

ljsrvy3e1#

假设您实际上在这个视图控制器中设置了一个UITableView作为一个插座,您所需要做的就是在goButton函数中调用tableView.reloadData()
然后在cellForRowAt中得到行号indexPath.row。将其乘以输入的数字,并将该数字提供给单元配置。

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    
    @IBOutlet weak var inputText: UITextField!
    @IBOutlet weka var tableView: UITableView! // This needs to be added and setup if you don't actually have it
    
    @IBAction func goButton(_ sender: Any) {
        tableView.reloadData()
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let aCell = tableView.dequeueReusableCell(withIdentifier: "aCell", for: indexPath)

        var content = UIListContentConfiguration.cell()
        let result = indexPath.row * (Int(inputText.text!) ?? 0)
        content.text = "\(result)"

        aCell.contentConfiguration = content
        return aCell
    }
}

正如您在代码中所看到的,您需要确保您实际上有一个表视图设置。
goButton方法只是重新加载表视图。
cellForRowAt计算该行的结果,并将其传递给单元配置。

相关问题