Swift UITableView: как собрать данные из выбранной ячейки - PullRequest
0 голосов
/ 04 сентября 2018

Я хотел бы знать, как собирать данные с предыдущей страницы при использовании UITableView.

Трудно объяснить, поэтому я приведу пример.

Приложение календаря Apple по умолчанию имеет эту функцию на странице нового события. Когда вы откроете страницу New Even, вы увидите поле Never in Repeat. Чтобы изменить это, вам нужно нажать «Никогда» и перейти на следующую страницу и выбрать что-то вроде «Каждую неделю». Если вы выберете «Каждую неделю», она вернется на первую страницу, а в поле «Повторить» появится «Еженедельно».

Я хотел бы сделать что-то похожее, но не уверен, как это настроить ... Мои вопросы; Нужно ли использовать Segue? Нужно ли использовать UITextField или UILabel для ячейки? Что запускает передачу данных?

1 Ответ

0 голосов
/ 04 сентября 2018

MainviewController для добавления ниже кода

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    // "SelectionSegue" is same as storyboard segue identifier
    if segue.identifier == "SelectionSegue" {
        (segue.destination as! SelectCategoryViewController).selectedCategoryValue = self.selectedCategoryLabel.text!
        print(selectedCategoryLabel)
    }
}

Установить идентификатор перехода в раскадровке

enter image description here

SelectedTableView

var selectedCategoryValue:String = ""
var CategeryArray = ["Food","Travel","Shopping","Card","MyReserve","Game","Songs","Movies","Entertainment","Business","Education","Finance","Drink","Sports","Social","Lifestyle"]

// Добавить методы TableView Delegate и Data Source

extension SelectCategoryViewController: UITableViewDelegate,UITableViewDataSource {

    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell")!
        cell.textLabel?.text = self.CategeryArray[indexPath.row]

        if self.CategeryArray[indexPath.row] == self.selectedCategoryValue {
            cell.accessoryType = .checkmark
        } else {
            cell.accessoryType = .none
        } 

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        tableView.cellForRow(at: indexPath)?.accessoryType = .checkmark
        self.selectedCategoryValue = CategeryArray[indexPath.row]
        self.tableView.reloadData()
    }
}

My View Like

enter image description here

NavigationController -> Mainview -> SelectedTableView

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...