- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个任务应用程序,在一个 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/
我是一名优秀的程序员,十分优秀!