Как перебрать несколько разделов в табличном представлении в Swift - PullRequest
0 голосов
/ 30 января 2019

Я работаю над проектом, который показывает несколько строк с тремя разделами в виде таблицы.Если пользователь нажимает на отдельную строку в разделе, этот цвет строки следует отправить в DetailVC.В настоящее время я отправляю один раздел цветов в DetailVC с помощью оператора switch.Теперь я хочу отправить остальные цвета раздела в 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.Цвета отображаются только в одном разделе, но не во всех разделах таблицы.

1 Ответ

0 голосов
/ 31 января 2019

Поскольку у вас есть многомерный массив, вы можете получить к нему доступ, используя свойства indexPath section и row, чтобы получить цвет String для этого indexPath.Затем вы можете создать свой UIImage и установить его на свой контроллер детального просмотра.

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)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...