Как обновить UITableViewCell информацией из подробного представления?

Я разрабатываю приложение, и хочу сделать его похожим на страницу настроек на iOS:

введите описание изображения здесь

Поведение, которое я хочу воспроизвести, – это тот, который найден в ячейках «От / до» и «Разрешить вызовы». Если вы заметили, эти ячейки отображают данные, которые пользователь вставил. Как я могу воспроизвести это?

Прежде всего, я довольно новичок в iOS, поэтому все, что я придумал, может быть не лучшим решением для моего дела.

Это то, о чем я думал (добавив метку справа и установив ее значение):

введите описание изображения здесь

Это лучший подход? Также, как установить это значение? Как мне пройти после того, как пользователь вернется из подробного представления, чтобы обновить эту ячейку?

В основном вы хотите обновить содержимое в предыдущем представлении (мы называем его FirstViewController ), когда какое-то значение изменяется в подробном представлении. Один из возможных способов сделать это – через Protocols and Delegates . Предполагая, что вы уже знаете о storyboards и segues вот пример. Этот пример просто изменяет текст UILabel в FirstViewController когда кнопка нажата в DetailViewController .

Давайте начнем с DetailViewController . Вы хотите наблюдать изменения в этой сцене и соответственно обновлять данные на другой сцене. Поэтому вам нужно определить протокол в этом классе.

 protocol DetailDelegate { func updateCellWith(_ data:String) } 

Полное определение этого класса будет выглядеть так:

 import UIKit protocol DetailDelegate { func updateCellWith(_ data:String) } class DetailViewController: UIViewController { var delegate: DetailDelegate? override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. } //On button tap the cell content will change in the previous scene through the delegate method @IBAction func didTapBtn(_ sender: AnyObject) { delegate?.updateCellWith("Cell updated") } } 

FirstViewController будет delegate DetailViewController и будет соответствовать DetailDelegate . Вы установите для параметра FromViewController как делегат элемента DetailViewController перед переходом.

 class FirstViewController: UIViewController, DetailDelegate { @IBOutlet weak var tableView: UITableView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. } // Mark Navigation @IBAction func moveToDetailVC(_ sender: AnyObject) { performSegue(withIdentifier: "detail", sender: indexPath) } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { let vc = segue.destination as! DetailViewController vc.delegate = self } } 

На кнопке коснитесь DetailViewController который передаст строку Cell updated до FirstViewController помощью метода делегата updateCellWith:

Interesting Posts
Давайте будем гением компьютера.