很抱歉这是一个完整的菜鸟,但我在表视图中的didSelectRowAtIndexPath函数中使用indexPathForSelectedRow()时遇到了麻烦。
我要做的是将表格中单元格的textLabel.text值捕获到NSUserDefaults中,然后将其转换为finalView。在finalView中,标签的文本将根据从TableView检索的值进行更新。
这是我的tableView中的代码:
class FinalView: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let values = NSUserDefaults.standardUserDefaults()
let restName = values.objectForKey("restoname") as String
Restaurant.text = restName
}
@IBOutlet weak var Restaurant: UILabel!
}
现在这里是finalView中的代码:
.*\ @.*
!.*@.*\..*
.*%.*
@domain.com
事实是,这确实有效。它确实检索单元格的textLabel.text值,将其转换为FinalView,并更新Restaurant.text以显示检索到的名称。问题是它从表中检索不正确的名称。
例如,如果我点击餐馆名称为“Cafe France”的行,则Restaurant.text将更改为“Tonys Cafe”而不是预期的“Cafe France”。我认为这是索引,但它可能是其他东西吗?非常感谢您的帮助。
答案 0 :(得分:1)
您不需要使用let index path = whatever。 TableView的方法didSelectRowAtIndexPath已经有indexPath参数。
只需更改行
即可let cell = tableView.cellForRowAtIndexPath(indexpath) as UITableViewCell!
到
let cell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell!
并删除此行
let indexpath = tableView.indexPathForSelectedRow() as NSIndexPath!
NSUserDefaults再次提供了一种特定方法来加载名为stringForKey()的存储字符串
Restaurant.text = NSUserDefaults().stringForKey("restoname") ?? ""