所以我创建了一个tableview,我添加(和删除)项目。我能够添加和删除tableView中的项目但是......有一些问题......
当我添加一个项目时,它不会显示在tableView中,直到我关闭模拟器,但是当我关闭并重新启动应用程序时,它会出现在tableView中。
当我向tableView添加另一个项目并关闭应用程序时,旧项目将被新添加的项目替换。因此,在将新项添加到tableView时自动删除旧项。
当然,我想在关闭应用程序时保存现有项目,并且我想在现有的tableView项目之上添加新项目而无需关闭应用程序并重新启动...我不确定是什么问题用我的代码......?提前谢谢你!
import UIKit
class PlaceTableVC : UITableViewController {
var placeList = [String]()
override func viewDidLoad() {
super.viewDidLoad()
if NSUserDefaults.standardUserDefaults().objectForKey("list") != nil {
placeList = NSUserDefaults.standardUserDefaults().objectForKey("list") as![String]
}
self.tableView.delegate = self
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 2
}
// Define number of different cells in the tableview
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if(section == 0) {
return 1
}
else {
return placeList.count
}
}
// Define number of different cells in the tableview
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
switch indexPath.section{
case 0:
let myProfile = tableView.dequeueReusableCellWithIdentifier("AddAPlaceButton") as! TableViewCell
return myProfile
default:
let cell = tableView.dequeueReusableCellWithIdentifier("AddedPlaceCell") as! SecondTableViewCell
cell.textLabel?.text = placeList[indexPath.row]
return cell
}
}
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let section = indexPath.section
if(section == 0) {
return 60
}
else {
return 60
}
}
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
if editingStyle == UITableViewCellEditingStyle.Delete {
placeList.removeAtIndex(indexPath.row)
NSUserDefaults.standardUserDefaults().setObject(placeList, forKey: "list")
tableView.reloadData()
}
func viewDidAppear(animated: Bool) {
tableView.reloadData()
}
}
}
import UIKit
var placeList = [String]()
class AddAPlaceModalVC: UIViewController, UITextFieldDelegate {
@IBOutlet var textField: UITextField!
@IBAction func addItem(sender:AnyObject) {
placeList.append(textField.text!)
textField.text = ""
NSUserDefaults.standardUserDefaults().setObject(placeList, forKey: "list")
}
override func viewDidLoad() {
super.viewDidLoad()
self.textField.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
@IBAction func closeAddAPlaceVC(sender: AnyObject) {
self.dismissViewControllerAnimated(true, completion: nil)
}
}
答案 0 :(得分:0)
在您的班级&#34; PlaceTable VC&#34;中,尝试使用此功能:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.tableView.reloadData()
}
此函数删除viewDidiAppear:
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath)
{
if editingStyle == UITableViewCellEditingStyle.Delete {
placeList.removeAtIndex(indexPath.row)
NSUserDefaults.standardUserDefaults().setObject(placeList, forKey: "list")
tableView.reloadData()
}
}