根据单元格textLabel更新标签文本

时间:2015-04-24 00:36:42

标签: ios swift nsuserdefaults

我正在尝试捕获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!

但出于某种原因,当我在模拟器中运行它时,它会崩溃。没有错误报告或没有。只是崩溃。任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:0)

尝试使用" ??" nil coalescing运算符返回一个空字符串,以防你在存储任何值之前尝试访问它:

Restaurant.text = NSUserDefaults().stringForKey("restoname") ?? ""

请注意。 NSUserDefaults有一个特定的方法来加载名为stringForKey()

的存储字符串

答案 1 :(得分:-1)

所以我想通了。

事实证明,问题在于从tableview到最终视图的转换。我需要将view2的类设置为FinalView而不是IndividualViewController。谢谢你。