我有一个表格视图,其中包含自定义单元格 - image,mapview,some text,sometext - 所有数据都保存在coredata中
点击单元格时,它将导航到详细视图。 在那我需要显示图像,mapview,sometext。 我无法将位置(地图坐标)和图像传递给详细视图。 怎么办?
我在核心数据中存储了纬度,经度,纬度,龙头,经度,这些需要转移到下一个视图
答案 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"
}
}