swift segue不从tableview传递数据

时间:2014-11-13 07:20:27

标签: ios swift segue

我在访问从tableViewController发送到viewController的数据时遇到问题。

第一个文件tableView Controller使用以下命令查找所选行并通过segue传递数据:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    // Get the row data for the selected row
    var name = self.names[indexPath.row]

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

        let selectedIndex = self.tableView.indexPathForCell(sender as UITableViewCell)

        if segue.identifier == "PictureSegue"{
            let vc = segue.destinationViewController as pictureViewController

            vc.recvData = name
        }
    }
}

第二个文件(viewController)正在尝试读取数据并打开警报。警报一直无效。为什么没有收到数据?

class pictureViewController: UIViewController {

var recvData:String!

    override func viewDidLoad() {
        super.viewDidLoad()

        if recvData != nil
        {
            if (recvData == "Apapne")
            {
                var alert: UIAlertView = UIAlertView()
                alert.title = recvData
                alert.message = recvData
                alert.addButtonWithTitle("Ok")
                alert.show()
            }
        }
        else
        {
            var alert: UIAlertView = UIAlertView()
            alert.title = "no"
            alert.message = "stuff"
            alert.addButtonWithTitle("Ok")
            alert.show()               
            }  
        }
   }

谢谢

2 个答案:

答案 0 :(得分:2)

请勿在{{1​​}}中访问该媒体资源 - 此时无法设置该资产。在viewDidLoad

中访问它

答案 1 :(得分:2)

问题是prepareForSegue方法。你必须覆盖它。在你的情况下,你只是在tableView didSelectRowAtIndexPath方法中定义一个名为prepareForSegue的函数,但你应该插入一个覆盖方法,而不是你的内部函数:

override func prepareForSegue(segue:UIStoryboardSegue,     sender:AnyObject!) { 
// do preparations 
}