我是一个新手,正在学习ios编程。我制作了一个自定义表格 View 单元格。我试图通过用户默认值在其中附加数据,但它不存储数据,每次我返回应用程序都会刷新,使 TableView 空白屏幕。
// data sent from here
class ViewController: UIViewController {
@IBOutlet weak var textfield: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func submit(_ sender: AnyObject) {
performSegue(withIdentifier: "move", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let destination = segue.destination as? secondviewcontroller
destination?.list.append(textfield.text!)
let defaults = UserDefaults.standard
defaults.set(destination?.list, forKey: "listarray")
UserDefaults.standard.synchronize()
}
}
// here i want to retreive
class secondviewcontroller: UIViewController {
@IBOutlet weak var tblView: UITableView!
var list = ["fahad","Ali","tahir"]
var abc = ""
override func viewDidLoad() {
super.viewDidLoad()
tblView.dataSource = self;
tblView.delegate = self;
let storedarray = UserDefaults.standard.object(forKey: "listarray")
print("hi\(storedarray)")
}
override func viewDidAppear(_ animated: Bool) {
tblView.register(TableViewCell.self, forCellReuseIdentifier: "TableViewCell")
tblView.reloadData()
}
@IBAction func backbtn(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}
}
导入UIKit
类第二 View Controller :UIViewController {
@IBOutlet weak var tblView: UITableView!
var list = ["fahad","Ali","tahir"]
var abc = ""
override func viewDidLoad() {
super.viewDidLoad()
tblView.dataSource = self;
tblView.delegate = self;
}
override func viewDidAppear(_ animated: Bool) {
tblView.register(TableViewCell.self, forCellReuseIdentifier: "TableViewCell")
let storedarray = UserDefaults.standard.object(forKey: "listarray")
print("hi\(storedarray)")
tblView.reloadData()
}
@IBAction func backbtn(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}
}
扩展第二 View Controller :UITableViewDataSource、UITableViewDelegate{
func numberOfSections(in tableView: UITableView) -> Int {
return 1;
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
print (list)
return list.count;
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath) as! TableViewCell;
cell.textlabel.text = list[indexPath.row];
return cell;
}
}
// my custom table view
import UIKit
class TableViewCell: UITableViewCell {
@IBOutlet weak var textlabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
}
最佳答案
- 您必须对 UITableViewDelegate 和 UITableViewDataSource 方法进行子类化,并实现所需的方法,以便在自定义 View 中显示数据。
引用这个:http://clean-swift.com/refactoring-table-view-data-source-and-delegate-methods/
- 尝试将存储数组的代码添加到 viewwillappear 方法中。
关于swift - 无法通过用户默认重新加载表格 View 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44402070/