如何将tableView中的单元格标签值传递给其他View?

时间:2015-08-06 16:19:40

标签: ios iphone swift uitableview label

我是IOS编程的初学者,也是整个编程的初学者。

(我有XCODE 6.4)

我已阅读了很多教程,但我还没找到所需的信息。

我有一个为标签赋值的代码:

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

    let identifier = "formuleTableViewCell"

    let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath) as! formule



    let formuleCommand = formulesList[indexPath.row]

    // Configure the cell...

    var shortCut = formuleCommand.formuleText

    cell.formuleLabel.text = shortCut



    return cell
}

然后,我有一个代码,必须得到标签的名称(我想是这样)

var valueToPass:String!

func tablView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    println("You selected cell #\(indexPath.row)!")

    // Get Cell Label
    let indexPath = tableView.indexPathForSelectedRow();
    let currentCell = tableView.cellForRowAtIndexPath(indexPath!) as UITableViewCell!;

    let identifier = "formuleTableViewCell"

    let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath!) as! formule

    valueToPass = cell.formuleLabel.text
    performSegueWithIdentifier("detail", sender: self)


}

最后,代码将数据从标签传递到另一个ViewController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if (segue.identifier == "detail") {

        // initialize new view controller and cast it as your view controller
       var viewController = segue.destinationViewController as! specialitiesViewController
        // your new view controller should have property that will store passed value
        viewController.passedValue = valueToPass



    }

}

必须这样做: 表视图获取单元格的数据(这里没有代码) 然后,名为TablView的方法必须得到单元格的标签。 最后,我点击单元格,然后移动到另一个ViewController,我的Cell,s Label数据在另一个Label中打印。

但是它不起作用,当我点击单元格时,我移动到ViewController并且Label中的文本等于nil(我看不到文本)。为什么这样做?帮我解决这个问题!

谢谢你的所有建议!

1 个答案:

答案 0 :(得分:2)

您的问题是您正在使用函数dequeueReusableCellWithIdentifier获取单元格,并且此方法仅在已标记为可以重复使用的情况下返回单元格。

您需要使用与委托方法不同的cellForRowAtIndexPath,小心获取单元格,更改didSelectRowAtIndexPath,如下所示:

func tablView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
   println("You selected cell #\(indexPath.row)!")

   // get cell label
   let cell = tableView.cellForRowAtIndexPath(indexPath) as! formule

   self.valueToPass = cell.formuleLabel.text
   self.performSegueWithIdentifier("detail", sender: self)
}

我希望这对你有所帮助。