Я думаю, что эта ошибка (" Выход NameLabel из DiariesTableView в UILabel недопустим. Розетки не могут быть подключены к повторяющемуся содержимому .") Происходит потому, что вы связываете NameLabel с UILabel в ячейке динамического tableView.Вам нужно создать подкласс UITableViewCell и связать там метку имени.Примерно так:
final class YourCell: UITableViewCell {
@IBOutlet var nameLabel: UILabel!
}
и в cellForRow func:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Diary1", for: indexPath) as! YourCell
cell.nameLabel.text = NameLabel.text
return cell
}
ИЛИ, если вам не нужен динамический просмотр таблицы, вы можете использовать «Статические ячейки»: enterописание изображения здесь
Со статическими ячейками вы можете создать выход в вашем ViewController, и вам не нужно реализовывать UITableViewDataSource, просто добавьте в XCode UI Builder.Но с помощью статических ячеек вы не можете вставлять или удалять ячейки из tableView
В вашем случае вам нужно хранить массив строк где-то, что вводит пользователя:
class TextStorage {
func save(text: String) {
// save somewhere example NSUserDefaults or CoreData
}
func obtainText() -> [String] {
// obtain saved text
}
}
ViewContoller с текстовым полем будет выглядеть так:этот.Текст:
class ViewController: UIViewController {
@IBOutlet var textField: UITextField!
private let textSorage = TextStorage()
@IBAction func done() {
textStorage.save(text: textField.text ?? "")
// then go to viewController with tableView
}
}
ViewController с табличным представлением просто получите сохраненный текст из хранилища и отобразите его в tableView:
class TableViewController: UIViewController {
@IBOutlet var tableView: UITableView!
private let textSorage = TextStorage()
private var savedText: [String]?
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
updateTableView()
}
func updateTableView() {
savedText = textSorage.obtainText()
tableView.reloadData()
}
}
extension TableViewController: UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Diary1", for: indexPath) as! YourCell
cell.nameLabel.text = NameLabel.text
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return savedText?.count ?? 0
}
}