ios - 如何快速循环遍历 TableView 中的多个部分

标签 ios swift uitableview

我正在开发一个项目,该项目在表格 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 sectionrow 属性访问它来获取颜色 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/

相关文章:

php - iPhone 4 iOS 5用UIViewController创建邮件列表的最佳方法是什么?

iphone - 如何默认选择 UITableViewCell?

ios - Appcode找不到目的地

swift - 在函数中使用时类内存未释放

ios - Collection View 单元格的多项选择

ios - 如果 View 是最后一个打开的,则应用程序启动时 ViewController 不会刷新

iOS - MPMediaPickerController 不适用于视频

Swift:如何在变量中保存泛型类型的任何可能实例

ios - UITableView 使用 deleteRowsAtIndexPaths 但如果创建新行则应用程序崩溃(查看收到的消息)

xcode - 将表格 View 行高设置为标签高度