你好,我是编程新手。所以我有一些基本问题,然后我需要解决我遇到的问题。
我创建了一个模型类
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)
我是否必须创建数组并指定值或转到第二种创建对象的方法
答案 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
}
}