将对象传递给通过segue连接的另一个控制器

时间:2016-01-25 16:29:17

标签: ios swift

你好,我是编程新手。所以我有一些基本问题,然后我需要解决我遇到的问题。

我创建了一个模型类

class Trip: NSObject {

    var tripTitle: String
    var tripSummary: String

   static var trips = [Trip]()

    init(tripTitle: String, tripSummary: String) {
        self.tripTitle = tripTitle
        self.tripSummary = tripSummary

    }

   class func addTrip(tripTitle: String, tripSummary: String){

            let t = Trip(tripTitle: tripTitle, tripSummary: tripSummary)

           trips.append(t)
        }

}

TripsDetailController

@IBAction func previewButtomPressed(sender: UIButton) {
        let tripTitle = tripTitleTxt.text!
        let tripSummary = tripSummaryTxt.text!



        Trip.addTrip(tripTitle, tripSummary: tripSummary)
       // let optionaltrip = Trip(tripTitle: tripTitle, tripSummary: tripSummary)


}



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "ShowTripPreviewTableViewController" {


        let tripPreviewTableViewController = segue.destinationViewController as! TripPreviewTableViewController
       // how can I pass the object here 
    }
}

如何在segue中传递对象

tripPreviewTableViewController

在这个类中,我知道我必须在这里声明一个变量,但不知道数据类型是什么,以及如何访问值

我也想知道这两个

的最佳方法是什么
 Trip.addTrip(tripTitle, tripSummary: tripSummary)

let trip = Trip(tripTitle: tripTitle, tripSummary: tripSummary)

我是否必须创建数组并指定值或转到第二种创建对象的方法

1 个答案:

答案 0 :(得分:1)

使用destinationViewController:

在tripPreviewTableViewController中,您需要添加新的可选变量类型的Trip:

var trip : Trip!

现在您可以使用destinationViewController传输对象:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "ShowTripPreviewTableViewController" {

        let tripPreviewTableViewController = segue.destinationViewController as! TripPreviewTableViewController
        tripPreviewTableViewController.trip = (Your Trip Object)

    }
}

//更新

首先,您需要在TripsDetailController中声明Trip对象:

var tripToPass = Trip!

然后采用以下方式之一进行定位:

tripToPass = Trip(tripTitle:"title",tripSummary:"summary")
//or get the Trip out of your trips array:
tripToPass = Trip.trips[index]

之后你可以传递旅行对象:

覆盖func prepareForSegue(segue:UIStoryboardSegue,sender:AnyObject?){         if segue.identifier ==" ShowTripPreviewTableViewController" {

        let tripPreviewTableViewController = segue.destinationViewController as! TripPreviewTableViewController
        tripPreviewTableViewController.trip = tripToPass

    }
}