gpt4 book ai didi

ios - 终止/退出应用程序后如何在 UITableView 中使用 NSUserDefaults 显示自定义单元格,Xcode Swift

转载 作者:行者123 更新时间:2023-11-28 12:47:18 25 4
gpt4 key购买 nike

我创建了一个任务应用程序,在一个 View Controller (AddPlan.swift) 中输入 4 个字符串,然后将这 4 个字符串保存到另一个 View Controller (ViewController.swift) 内的 TableView 中。一切都在按计划进行,但是我希望即使我终止了应用程序,也能显示已经创建的表格 View 单元格。我看过教程,但是没有教程显示如果它是自定义单元格如何保存单元格。我知道你可以使用 NSUserDefaults 但我一直没有运气。

这是与我的问题相关的 AddPlan.swift

class addPlan: UIViewController, UITextFieldDelegate {


var time: Int = 6


@IBOutlet var txt: UITextField!


@IBOutlet var Complete: UIImageView!


@IBOutlet var btn7: UIButton!
@IBOutlet var btn6: UIButton!
@IBOutlet var txt3: UITextField!
@IBOutlet var txt2: UITextField!
@IBOutlet var txt1: UITextField!
@IBOutlet var Button02: UIBarButtonItem!

override func viewDidLoad() {



self.txt.delegate = self;
self.txt1.delegate = self;
self.txt2.delegate = self;
self.txt3.delegate = self;





}

func textFieldShouldReturn(textField: UITextField) -> Bool {
self.view.endEditing(true)
return false
}

func dismissKeyboard() {
//Causes the view (or one of its embedded text fields) to resign the first responder status.
view.endEditing(true)
}


@IBAction func ClickedforSelection(sender: AnyObject) {
taskMgr.addTask(txt.text!, desc: txt1.text!, date: txt2.text!, clas: txt3!.text!)
self.view.endEditing(true)
txt.text = ""
txt1.text = ""
txt2.text = ""
txt3.text = ""

这是与我的问题相关的 ViewController.swift

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){

if(editingStyle == UITableViewCellEditingStyle.Delete){
taskMgr.tasks.removeAtIndex(indexPath.row)
NSUserDefaults.standardUserDefaults().setObject(taskMgr, forKey: "list")
tbl?.reloadData();
}


}

override func viewWillAppear(animated: Bool) {
tbl?.reloadData();
}

override func viewWillDisappear(animated: Bool) {

}



func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

if (self.resultSearchController.active)
{
return self.filteredAppleProducts.count
}
else
{
return taskMgr.tasks.count
}
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) ->
UITableViewCell{

let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! TableView

cell.lbl.text = taskMgr.tasks[indexPath.row].name
cell.lbl2.text = taskMgr.tasks[indexPath.row].desc
cell.lbl4.text = taskMgr.tasks[indexPath.row].date
cell.lbl3.text = taskMgr.tasks[indexPath.row].clas

return cell

}

这是我的 ViewController.swift 文件的 ViewDidLoad

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.\
text.enabled = false


self.tbl?.delegate = self
self.tbl?.dataSource = self

if NSUserDefaults.standardUserDefaults().objectForKey("list") != nil {




}


tbl!.separatorStyle = UITableViewCellSeparatorStyle.None
tbl!.backgroundColor = UIColor(red: 239 / 255.0, green: 239 / 255.0, blue: 239 / 255.0, alpha: 1.0)

我的 TaskMgr.tasks 来自这个文件..

import UIKit

var taskMgr: TaskManager = TaskManager()

struct task{
var name = "Un-Named"
var desc = "Un-Described"
var date = "Un-Described"
var clas = "Un-Described"

}

class TaskManager: NSObject {

var tasks = [task]()

func addTask(name: String, desc: String, date: String, clas: String){
tasks.append(task(name: name, desc: desc, date: date, clas: clas))
}
}

再次澄清一下,我的应用程序有 2 个 View Controller ,其中一个 (AddPlan.swift) 有 4 个 UITextFeilds 和一个按钮。我在该文本字段中输入单词,如果我按下按钮,这些单词将被传输到另一个 View Controller (ViewController.swift) 中的 UITableView。然后这些词会显示在一个单元格中。我想知道的是如何对单元格进行编码,以便在我退出/终止应用程序时,如果我重新打开应用程序,它们仍会显示。

最佳答案

您的问题是 XY problem .

您说“即使我终止应用程序,我也希望保存单元格中的文本,例如 lbl、lbl1、lbl2、lbl3。”

这个你想错了。 TableView 单元格是 MVC 设计模式中的 View 对象。它们向用户显示信息并与用户交互。他们不存储信息。数据存储在模型中(通常是一个数组)。在您的情况下,它看起来像 taskMgr.tasks 包含您正在显示到 TableView 的数据数组。如果用户更改了单元格中的数据,那么您应该立即保存这些更改,直接保存到 taskMgr.tasks[row],或者保存到一些临时的更改数组,以便您可以支持撤消。

无论如何,您需要弄清楚的是如何保存您的模型数据。为了帮助您解决这个问题,您需要更多地解释您的模型。

我看到您打开了一个包含更多信息的重复问题。不要那样做。编辑您的原始问题以提供有关您的模型、它的创建方式以及您当前为加载/保存该模型数据所做的任何操作的信息。

请注意,用户默认值可能不是一个好的选择。它旨在保存少量简单数据。存储大量 volatile 数据不是一个好主意。另一种存储形式可能是更好的选择,但您没有向我们提供足够的信息来提出建议。

关于ios - 终止/退出应用程序后如何在 UITableView 中使用 NSUserDefaults 显示自定义单元格,Xcode Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37623956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com