我正在开发一个项目,该项目在表格 View 中显示包含三个部分的多行。如果用户点击某个部分中的单个行,则该行颜色应发送到 DetailVC。目前,我正在使用 switch
语句将一部分颜色发送到 DetailVC。现在我想将剩余的部分颜色发送到 DetailVC。
这是我的代码。我几乎尝试过,但它对我不起作用。我知道我必须更改 switch
语句中的代码。
import UIKit
import Foundation
class ViewController: UITableViewController {
let cellID = "Cell"
let twoDimensionalArray = [
["Blue","Green","Red"],
["Orange","Purple"],
["Brown","Yellow"]
]
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.rowHeight = 44.0
}
// Mark:- Tableview datasource methods
override func numberOfSections(in tableView: UITableView) -> Int {
return twoDimensionalArray.count
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let label = UILabel()
label.text = "Header"
label.backgroundColor = UIColor.lightGray
return label
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return twoDimensionalArray[section].count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellID, for: indexPath) as! TableViewCell
cell.imageview.image = UIImage(named : twoDimensionalArray[indexPath.section][indexPath.row])
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = self.storyboard? .instantiateViewController(withIdentifier: "VC2") as! DetailViewController
switch indexPath.row {
case 0:
vc.passedImage = UIImage(named : "Blue")!
self.present(vc, animated: true, completion: nil)
break
case 1:
vc.passedImage = UIImage(named : "Green")!
self.present(vc, animated: true, completion: nil)
break
case 2:
vc.passedImage = UIImage(named : "Red")!
self.present(vc, animated: true, completion: nil)
break
default :
vc.passedImage = UIImage(named : "Blue")!
self.present(vc, animated: true, completion: nil)
}
}
}
预期结果是某个部分中选定的行颜色将显示在 DetailVC 中。它仅在一个部分中显示颜色,而不是在表格 View 中的所有部分中显示颜色。
最佳答案
由于您有一个多维数组,您可以使用 indexPath
section
和 row
属性访问它来获取颜色 String
为该 indexPath
。然后,您可以创建 UIImage
并将其设置在详细 View Controller 上。
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let vc = self.storyboard? .instantiateViewController(withIdentifier: "VC2") as! DetailViewController
let color = twoDimensionalArray[indexPath.section][indexPath.row]
vc.passedImage = UIImage(named : color)!
self.present(vc, animated: true, completion: nil)
}
关于ios - 如何快速循环遍历 TableView 中的多个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54444264/