indexPathForSelectedRow()的问题,返回错误的索引。使用Swift

时间:2015-04-24 02:19:16

标签: ios uitableview swift nsuserdefaults

很抱歉这是一个完整的菜鸟,但我在表视图中的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”。我认为这是索引,但它可能是其他东西吗?非常感谢您的帮助。

1 个答案:

答案 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") ?? ""