如何通过位置和图像准备segue

时间:2016-02-26 16:33:49

标签: ios swift core-data

我有一个表格视图,其中包含自定义单元格 - image,mapview,some text,sometext - 所有数据都保存在coredata中

点击单元格时,它将导航到详细视图。 在那我需要显示图像,mapview,sometext。 我无法将位置(地图坐标)和图像传递给详细视图。 怎么办?

我在核心数据中存储了纬度,经度,纬度,龙头,经度,这些需要转移到下一个视图

3 个答案:

答案 0 :(得分:1)

prepareForSegue有一个segue参数,您可以使用segue.destinationViewController访问详细信息视图的视图控制器(请务必使用as!强制转发它)。然后你可以直接设置它的属性。

答案 1 :(得分:1)

假设您的目标控制器定义为DisplayDetailViewController,那么您需要像这样添加要传递给它的变量

class DisplayDetailViewController: UIViewController
{
    var latitude : Double?
    var longitude  : Double?
    var latitudeDelta  : Double?
    var longitudeDelata : Double?

    // everything else in this class
}

这里是您在didSelectRowAtIndexPath方法中所需要的,您已将segue定义为MyShowDetailSegue

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
    self.performSegueWithIdentifier("MyShowDetailSegue", sender: self)
}

最后,你准备了prepareForSegue方法中的segue - 在这里显示你将如何为许多不同的转换做到这一点 - 如果那里只有一个

,请取出支票
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    switch segue.identifier!
    {
    case "MyShowDetailSegue":
        let destinationController : DisplayDetailViewController = segue.destinationViewController as! DisplayDetailViewController

        destinationController.delegate = self // you will need this if you're using a delegate to make updates back in the original controller

        destinationController.latitude = latitude
        destinationController.longitude = longitude
        destinationController.latitudeDelta = latitudeDelta
        destinationController.longitudeDelta = longitudeDelta

    case "MyOtherSegue":
        //  do other stuff
        destinationController.delegate = self

    case "MyOtherOtherSegue":
        //  do other stuff
        destinationController.delegate = self

    default:
        break
    }

}

答案 2 :(得分:0)

在destinationViewController中创建属性,并在prepareForSegue中设置值,如下所示

// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using segue.destinationViewController.
    // Pass the selected object to the new view controller.
    if segue.identifier == "pushText"{
        let destinationVC = segue.destinationViewController as! PublishVC
        destinationVC.noteID = "a"

    }
}