【发布时间】:2016-01-18 17:41:36
【问题描述】:
我正在尝试创建一个基于字符串数组显示表格视图的应用程序。
我有一个视图控制器和一个较小的内容视图。在视图控制器中有一个文本字段和一个按钮,应该将写入的文本保存在一个数组中并在表格视图控制器中显示它。以及将其嵌入到内容视图中。
我不知道如何保存写入的文本并将其添加到数组中,可能使用追加。
如何在表格视图中显示数组并将数组保存在 NSUserDefaults 中?
编辑: 这是视图控制器和内容视图的图像。我想在文本字段中插入一个字符串(绿色按钮 Save 上的那个),然后我点击绿色按钮,我写的字符串被添加到数组中并显示在嵌入的表视图控制器的表视图单元格中内容视图。同时,文本字段返回空,但我已经知道如何清除它。然后,我可以在文本字段中重写文本,它应该重复我刚才描述的操作。 保存在 NSUserDefaults 中的时刻并不那么重要。 谢谢您的帮助。 :)
http://i.stack.imgur.com/z5uTc.png
编辑 2:
主VC
import UIKit
class mainVC: UIViewController {
@IBOutlet var txtField: UITextField!
var embTableVC: tableVC!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "embededTableVC" {
embTableVC = segue.destinationViewController as! tableVC
}
}
@IBAction func Save() {
if let Text = txtField.text {
if txtField.text == "" {
myArray.append(Text)
let row = myArray.count-1
let indexPath = NSIndexPath(forRow: row, inSection: 0)
embTableVC.myTableView.insertRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
txtField.text = ""
txtField.resignFirstResponder()
}
}
表VC
import UIKit
var myArray = [String]()
class tableVC: UITableViewController {
@IBOutlet var myTableView: UITableView! {
didSet {
myTableView.dataSource = self
myTableView.delegate = self
}
}
override func viewDidLoad() {
super.viewDidLoad()
myTableView.dataSource = self
myTableView.delegate = self
myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "customcell")
// Do any additional setup after loading the view, typically from a nib.
}
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
myTableView.reloadData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return myArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = myTableView.dequeueReusableCellWithIdentifier("customcell", forIndexPath: indexPath) as UITableViewCell
cell.textLabel?.text = myArray[indexPath.item]
return cell
}
非常感谢:)
【问题讨论】:
-
您能否详细说明您希望按什么顺序发生的事情?或许还有你故事板的截图?
-
查看编辑,非常感谢:)
标签: arrays swift uitextfield