我正在尝试捕获tableView中单元格的textLabel.text值,并使用nsuserdefaults将其传输到另一个视图。在此最终视图中,应使用捕获的值更新标签。
这是来自TableViewController.swift的代码,它捕获值:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
//actions that will proceed immediately a cell row is clicked
var cell = tableView.dequeueReusableCellWithIdentifier("Cell") as? PFTableViewCell
//here I do the capture
let captureCellVals = NSUserDefaults.standardUserDefaults()
captureCellVals.setValue(cell?.textLabel?.text, forKey: "restoname")
//code that transitions to the final view
let view2 = self.storyboard?.instantiateViewControllerWithIdentifier("finalView") as IndividualViewController
self.navigationController?.pushViewController(view2, animated: true)
}
这是最终视图中应该设置标签文本值的代码:
override func viewDidLoad() {
super.viewDidLoad()
let values = NSUserDefaults.standardUserDefaults()
let resname = values.valueForKey("restoname")
Restaurant.text = resname as? String
// Do any additional setup after loading the view, typically from a nib.
}
@IBOutlet var Restaurant: UILabel!
但出于某种原因,当我在模拟器中运行它时,它会崩溃。没有错误报告或没有。只是崩溃。任何帮助将不胜感激,谢谢!
答案 0 :(得分:0)
尝试使用" ??" nil coalescing运算符返回一个空字符串,以防你在存储任何值之前尝试访问它:
Restaurant.text = NSUserDefaults().stringForKey("restoname") ?? ""
请注意。 NSUserDefaults有一个特定的方法来加载名为stringForKey()
的存储字符串答案 1 :(得分:-1)
所以我想通了。
事实证明,问题在于从tableview到最终视图的转换。我需要将view2的类设置为FinalView而不是IndividualViewController。谢谢你。