Как показать полученные значения из Viewcontroller B в Viewcontroller Представление таблицы в виде пользовательской ячейки с использованием Swift? - PullRequest
0 голосов
/ 26 апреля 2019

В моем сценарии я передаю значение от Viewcontroller B до Viewcontroller A. В Viewcontroller A я поддерживаю просмотр таблицы с помощью CustomCell textview (я использую только одну строку). В этом текстовом представлении мне нужно показать, какое значение я получил от Viewcontroller B. Здесь, ниже код, который я использую. Пожалуйста, предоставьте некоторую идею для моего сценария.

class ViewcontrollerB: UIViewController, isAbleToReceiveData  {

    func pass(data: String) {
        print("USER: \(data)")
    }

    .... 
    ....   

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

        let cell = self.tableview.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! CustomCell

        // From TextView Placeholder and Color
        cell.from_textview.text = "Enter your text" // here I need to show received “data” from VC_B.
        cell.from_textview.textColor = UIColor.lightGray

        return cell
    }
}

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Создать переменную, к которой можно получить доступ из любого места в VC_A

var stringReceived: String? = nil

Теперь в функции

func pass(data: String) {
        print("USER: \(data)")
        //add the following 
        stringReceived = data
        self.UITableView_name.reloadData()
    }

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

изменить следующее с cell.from_textview.text = "Enter your text" на cell.from_textview.text = stringReceived!

Так что в основном используйте reloadData() для обновления UITableView после получения данных.

0 голосов
/ 26 апреля 2019
func pass(data: String) {
    let indexPath = IndexPath.init(row: 0, section: 0)
    let cell = tableView.cellForRow(at: indexPath) as CustomCell
    cell.from_textview.text = data
    }

Поскольку у вас есть только 1 ячейка, это будет строка 0, секция 0, и tableView.reloadData() также будет работать.но если у вас есть несколько ячеек, и вы хотите изменить 1 конкретную ячейку, лучше просто вызвать эту ячейку, или даже self.tableView.reloadRows(at: [IndexPath], with: UITableViewRowAnimation)

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