Я сделал простые приложения для практики. Я новичок в программировании.
Прежде всего я подробно объясню, что я сделал и что хочу делать.
Создать файл Swift-файл для данных:
class done {
var meal: [String] = ["tomato","banana","potato","peanuts"]
}
Настройка ViewController У меня есть текстовое поле и кнопка для go на следующей странице, это добавит данные текстового поля, которое вводит человек, и добавит в мой список данных о еде:
import UIKit
class ViewController: UIViewController {
var data = done()
@IBOutlet weak var textField: UITextField!
@IBOutlet weak var button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
print("Data now : \(data.meal)")
}
@IBAction func buttonaction(_ sender: UIButton) {
var newitem = textField.text ?? ""
if textField.text == "" {
newitem = "empty"
}
data.meal.append(newitem)
performSegue(withIdentifier: "toView", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toView" {
let successVCG = segue.destination as! TableViewController
successVCG.data = self.data
}
}
}
У меня есть второй ViewController, который будет отображаться в TableView с TableViewcell, а внутри у меня есть Pickerview в каждой строке ..
import UIKit
class TableViewController: UIViewController{
@IBOutlet weak var table: UITableView!
var data = done()
override func viewDidLoad() {
super.viewDidLoad()
print("Transfert Data OK : \(data.meal)")
table.delegate = self
table.dataSource = self
}
@IBAction func `return`(_ sender: Any) {
print(data.meal)
}
@IBAction func update(_ sender: Any) {
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "toViewa" {
let successVCG = segue.destination as! ViewController
successVCG.data = self.data
}
}
}
extension TableViewController: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 300
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 2
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "cellule") as? TableViewCell {
return cell
}
let cell2 = UITableViewCell(style: .subtitle, reuseIdentifier: nil)
return cell2
}
}
И это конфигурация TableViewCell
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var picker: UIPickerView!
var data = done()
override func awakeFromNib() {
super.awakeFromNib()
picker.delegate = self
picker.dataSource = self
}
}
extension TableViewCell: UIPickerViewDataSource, UIPickerViewDelegate {
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return data.meal.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return data.meal[row]
}
}
Представление «Выбор» правильно отображает data.meal, но никогда не обновляет, пока я добавляю новые данные в переменную.
В моем отпечатке. Я вижу новое обновление данных в ViewController и TableViewController, но я стараюсь изо всех сил в процессе обучения. Не удается обновить PickerView. Я не могу отправить новое значение в TableViewCell ... m Пожалуйста, помогите. Большое спасибо. Люблю кодить!