gpt4 book ai didi

ios - 在 Swift 中重用带有动态单元格的第二个 View Controller 来显示不同数组的元素是否有效?

转载 作者:行者123 更新时间:2023-11-28 06:29:05 24 4
gpt4 key购买 nike

我目前有 2 个 table view controllers。我在婚姻状况和家庭州(州)的两个静态单元格上添加了两个披露指示器。用户点击两者之一,然后被带到另一个 View Controller ,在那里他做出适当的选择。

该代码目前适用于婚姻状况。我的问题是在这里我是否可以出于相同目的重用第二个 View Controller (即具有动态单元格的 View Controller )但使用不同的数组(在本例中为具有状态名称的数组)。对我来说,很明显我可以简单地添加一个新的 View Controller 并在那里实现状态列表。这是 Storyboard的屏幕截图:

enter image description here

首先查看 Controller 代码:

import UIKit

class FirstTableViewController: UITableViewController, DataEnteredDelegate {

@IBOutlet var maritalStatusCell: UITableViewCell!
@IBOutlet var maritalStatusLabel: UILabel!



func userDidEnterInformation(info: String) {

maritalStatusLabel.text = "Marital Status: (\(info))"

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "maritalStatusSegue" {
let sendingVC: SecondTableViewController = segue.destination as! SecondTableViewController
sendingVC.delegate = self
}
}

}

第二个 View Controller 代码:

import UIKit

protocol DataEnteredDelegate {
func userDidEnterInformation(info: String)
}

class SecondTableViewController: UITableViewController {
let maritalStatusArray: [String] = ["Single", "Married"]
let cantonArray: [String] = ["ZG", "ZH", "BE", "LU", "AG"]
var delegate: DataEnteredDelegate? = nil





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

}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if delegate != nil {
let information: String? = tableView.cellForRow(at: indexPath)?.textLabel?.text
delegate!.userDidEnterInformation(info: information!)
dismiss(animated: true, completion: nil)
self.navigationController?.popViewController(animated: true)
}


}




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

let cell = tableView.dequeueReusableCell(withIdentifier: "MaritalStatusCell", for: indexPath)
cell.textLabel?.text = maritalStatusArray[indexPath.row]
return cell

}



}

在这里对州列表也使用第二个 TableView Controller 是否有意义?如果是,我该如何实现?谢谢。

最佳答案

是的,你可以使用相同的 View Controller 来显示你的状态名称数组,我认为你已经在 cantonArray 中声明了,你需要做的是在 中声明一个 bool 变量第二个 View Controller (如果你只想管理两个数组,如果你想管理更多数组然后声明一个enum)。然后在 segue get 从触发 segue 的索引中,您可以像这样获取选定的 indexPath

if let indexPath = tableView.indexPathForSelectedRow{

}

现在检查 indexPath.row,如果它是 0,那么您选择了 Marital State,因此您需要显示 maritalStatusArray 数组,因此使 bool 变量 为真 如果你得到 indexpath.row = 1 然后使该变量 false

现在在 Second View Controller 中根据 bool 变量添加一个条件,并像这样显示该数组中的数据

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

let cell = tableView.dequeueReusableCell(withIdentifier: "MaritalStatusCell", for: indexPath)
if showMaritalArray {
cell.textLabel?.text = maritalStatusArray[indexPath.row]

} else {
cell.textLabel?.text = cantonArray[indexPath.row]

}
return cell

}

这是声明enum

的方式
enum SelectedRow {
case MaritalStatus
case States
case ThirdRow
}

var selectedRow = SelectedRow.MaritalStatus

关于ios - 在 Swift 中重用带有动态单元格的第二个 View Controller 来显示不同数组的元素是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40914079/

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