swift - 无法通过用户默认重新加载表格 View 中的数据

标签 swift xcode8

我是一个新手,正在学习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()
    }
}

My UI storyboard getting this error

最佳答案

  1. 您必须对 UITableViewDelegate 和 UITableViewDataSource 方法进行子类化,并实现所需的方法,以便在自定义 View 中显示数据。 引用这个:http://clean-swift.com/refactoring-table-view-data-source-and-delegate-methods/
  2. 尝试将存储数组的代码添加到 viewwillappear 方法中。

关于swift - 无法通过用户默认重新加载表格 View 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44402070/

相关文章:

arrays - 检查数组是否包含 Swift 4 中的元素

swift3 - 忽略 NSLocationAlwaysUsageDescription 和 NSLocationWhenInUseUsageDescription

generics - 使泛型类型符合 Swift 扩展中的协议(protocol)

ios - 覆盖ios后退按钮

ios - 如何以编程方式将不同单元格的不同图像添加到 tableView (Swift)

swift - CGPoint 的 x 或 y 值中的负 0

ios - 当应用程序处于焦点状态时,无法将 OneSignal 通知显示为横幅 :iOS

swift3 - 更改为 Swift 3 后发生突变运算符错误,已研究问题,但无法解决

Xcode 8扩展执行NSTask

带有 slider 和 MIDI 的 Swift ScrollView