Когда пользователь вводит новый текст, преобразуйте вашу строку в массив символов:
let chars = Array(string)
Используйте массив символов в качестве источника данных для представления таблицы.Вызовите reloadData()
в вашем табличном представлении после изменения массива символов.
Ваши методы источника данных могут выглядеть следующим образом:
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return chars.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = String(chars[indexPath.row])
return cell
}
Редактировать:
Ниже приведен полностьюреализованный подкласс UITableViewController.
Чтобы использовать его:
Добавьте класс в ваш проект в виде файла Swift.
Добавьте сцену UITableViewController вВаша раскадровка
Выберите «Identity Inspector» и измените класс на CharacterTableViewController
Перетащите представление контейнера на контроллер представления, который выхочу содержать ваш вид таблицы.(Я назову это «родительским» контроллером представления)
Перетащите управление из представления контейнера в ваше CharacterTableViewController
.В появившемся всплывающем меню выберите «embed», чтобы создать последовательность внедрения.
Добавьте метод prepare(for:sender:)
(prepareForSegue) в родительский контроллер представления, который пытается привести segue.в качестве пункта назначения введите CharacterTableViewController
, используя if let
и, если это удастся, сохраните CharacterTableViewController
в переменной экземпляра.(Давайте назовем это characterVC
.)
Добавьте текстовое представление к вашему родительскому контроллеру представления.Перетащите элемент управления в родительский контроллер представления, чтобы добавить IBOutlet
к текстовому представлению.Позвоните в розетку theTextView
.
Добавьте кнопку в родительский контроллер просмотра.Удерживая нажатой клавишу Control, перетащите кнопку в родительский контроллер представления, чтобы создать IBAction.В действии кнопки извлеките текст из theTextView
и передайте его characterVC
(characterVC.contentString = theTextView.text
)
import UIKit
class CharacterTableViewController: UITableViewController {
public var contentString: String? {
didSet {
if let string = contentString {
characters = Array(string)
} else {
characters = nil
}
}
}
var characters: [Character]? {
didSet {
tableView.reloadData()
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
return characters?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = String(characters?[indexPath.row] ?? Character(""))
return cell
}
}
Edit # 2:
Я создал проект, который использует класс табличного представления выше в демонстрационном проекте.Вы можете скачать его по следующей ссылке: https://github.com/DuncanMC/CharacterTableView.git