输入表格的文本字段出现问题

Posted

技术标签:

【中文标题】输入表格的文本字段出现问题【英文标题】:Trouble with text field entry to a table 【发布时间】:2015-11-17 03:05:09 【问题描述】:

我的主要问题是我没有将我输入的文本输入到我制作的标签或表格中(有点偏差,但想稍微自定义一下)。我没有收到任何错误,但有人可以看看这段代码,看看其中是否有我可能忽略的重大错误吗? 编辑:我不断返回并更改类型之类的小东西,但没有任何效果。这是我的整个代码,以防它对每个人都更有意义

import UIKit

class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate 

var weatherList = [String] ()

@IBOutlet weak var textField: UITextField!

@IBOutlet weak var textLabel: UILabel!

@IBAction func searchButton(sender: AnyObject) 

    weatherList.append(textField.text!)

    textField.text = ""

    NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")



@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() 
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    if NSUserDefaults.standardUserDefaults().objectForKey("weatherList") != nil 

        weatherList = NSUserDefaults.standardUserDefaults().objectForKey("weatherList") as! [String]

    

    self.textField.delegate = self



override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.


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

    return weatherList.count



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

    let cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "Cell")

    cell.textLabel?.text = weatherList[indexPath.row] as String

    return cell



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

    if editingStyle == UITableViewCellEditingStyle.Delete 

        weatherList.removeAtIndex(indexPath.row)

        NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")

        tableView.reloadData()

    



override func viewDidAppear(animated: Bool) 
    tableView.reloadData()



override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) 

    self.view.endEditing(true)



func textFieldShouldReturn(textField: UITextField) -> Bool 

    textField.resignFirstResponder()

    performAction()

    return true



func performAction() 

    weatherList.append(textField.text!)

    textField.text = ""

    NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")




【问题讨论】:

【参考方案1】:

来自NSUserDefaults class reference:

NSUserDefaults 类提供了方便的访问方法 常见类型,例如浮点数、双精度数、整数、布尔值和 URL。一种 默认对象必须是一个属性列表,即(或 对于集合实例的组合):NSData,NSString, NSNumber、NSDate、NSArray 或 NSDictionary。如果你想存储任何 其他类型的对象,您通常应该将其归档以创建一个 NSData 的实例。

这不是快速数组。改用 NSMutableArray:

var weatherList:NSMutableArray = NSMutableArray()

然后

self.weatherList.addObject(textField.text)

【讨论】:

我解决了这个问题,但现在我在第一行的 AppDelegate 中遇到错误 |类 AppDelegate: UIResponder, UIApplicationDelegate |说线程 1:信号 SIGABRT 在您的代码中,您仍在使用 swift 样式数组。 NSUserDefaults 只能接受上面列出的对象类型。你也不能这样投:weatherList = NSUserDefaults.standardUserDefaults().objectForKey("weatherList") as! [String] 如果要使用 NSUserDefaults,则需要使用 NSArray。这是另一个问题,我给出了相同的问题和相同的答案:***.com/questions/32798887/… 好吧,如果我把它改成一个数组,我该怎么改 NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList")weatherList = NSUserDefaults.standardUserDefaults().objectForKey("weatherList") 到? 或者,如果我将其更改为 NSArray,我要编写什么代码来追加和删除? NSUserDefaults.standardUserDefaults().setObject(weatherList, forKey: "weatherList") 和 weatherList = NSUserDefaults.standardUserDefaults().arrayForKey("weatherList").mutableCopy()。如果你想删除一个对象 self.weatherList.removeObjectAtIndex(index)

以上是关于输入表格的文本字段出现问题的主要内容,如果未能解决你的问题,请参考以下文章

从表格视图中删除一个单元格,删除按钮出现在文本字段后面

RD 邮件表格。在另一个输入字段中隐藏错误文本的问题

带有文本字段的 UiTableView - 出现键盘时滚动

如何在通过文本字段和圆形矩形按钮提供的表格视图单元格中显示数据

用户输入不适用于在表格视图中以编程方式添加的文本字段

文本字段标签和表格视图