gpt4 book ai didi

iphone - 根据按下的按钮将数据传递到 tableViewController

转载 作者:行者123 更新时间:2023-11-30 12:21:38 25 4
gpt4 key购买 nike

我是 swift 的初学者,但我在 HTML、CSS 和一些 Java 方面确实有不错的背景。我创建这个帐户实际上只是为了问这个问题,所以我会开门见山。

我真的很喜欢 swift,但我真的花了一周的时间一遍又一遍地编写同样的代码,查阅了无数的教程、书籍、指南等。我不会撒谎,当我不断尝试解决这个问题时,我真的厌倦了看到编译器中堆积了 10 多个错误。

我有一个 ViewController,还有一个 TableViewController - ViewController 是我的主屏幕。在所说的 viewController 上,我有两个按钮,一个用于 BuildingItems,另一个用于 BuildingBlocks。两者都是segue。

在我的 TableViewController 上,我有 buildBlocks 和 buildItems,它们都定义了数组。

我想要做的是取决于用户选择的按钮,我希望它成为用于填充我的表格 View 的数据。我可以使用普通的 cell.textLabel?.text = arrayNameHere[indexPath.row] 专门填充表格 View ,但显然这并不能解决我的问题。

我希望你能帮助我。我为蹩脚的语法和格式表示歉意,这一周我实际上每天花了 4-5 个小时试图让它发挥作用,结果我生气了,并三次删除了我的整个项目。我将包含下面的代码。再次,请原谅格式。我不知道为什么我似乎无法快速弄清楚,我一直在尝试委托(delegate)的每种变体,试图传递一些让它工作的东西,但没有任何效果。

View Controller :

@IBAction func BuildItems (_sender: Any) {
}

@IBAction func BuildBlocks (_sender: Any) {
}

在 TableViewController 中:

    let buildItems = ["these are all my", "arrays for this"]

let buildBlocks = ["same thing here","just saving time"]

class TableViewController: UITableViewController {

var myIndex = 0

override func tableView(_ tableView: UITableView, numberOfRowsInSection: Int) -> Int {
return buildItems.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCell(withIdentifier: "cell" for: indexPath)

cell.textLabel?.text = buildItems[indexPath.row]

return cell
}


override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
myIndex = indexPath.row

}
}

最佳答案

您只需要 1 个 segue:从 ViewControllerTableViewController

在您的ViewController中创建一个按下按钮的变量:

var category = ""

按下按钮时更改值,然后继续:

@IBAction func BuildItems (_sender: Any) {
category = "BuildItems"
self.performSegue(withIdentifier: "segue", sender: self)
}

@IBAction func BuildBlocks (_sender: Any) {
category = "BuildBlocks"
self.performSegue(withIdentifier: "segue", sender: self)
}

然后在准备中:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "segue" {
let vc = segue.destination as! TableViewController
// Assuming you created a variable called sentCategory in the TableViewController
vc.sentCategory = category
}
}

在您的TableViewController中创建一个空数组:

let data = [String]()

viewDidLoad中:

if sentCategory == "BuildItems" {
data = buildItems
} else {
data = buildBlocks
}

使用 data 变量填充您的 TableView

一些评论:

  • 将所有内容保留在您的类范围内,除非您有充分的理由不这样做。
  • 在这种情况下您不需要委托(delegate)。使用 prepare 函数传递数据,如上所示。

关于iphone - 根据按下的按钮将数据传递到 tableViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44724976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com