【问题标题】:Pass object to another controller connecting through segue将对象传递给通过 segue 连接的另一个控制器
【发布时间】:2016-01-25 16:29:17
【问题描述】:

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

我创建了一个模型类

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)

我应该创建一个数组并赋值还是转到创建对象的第二种方法

【问题讨论】:

标签: ios swift


【解决方案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]

之后就可以传递trip对象了:

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

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

    }
}

【讨论】:

  • 当我执行此操作时,tripPreviewTableViewController.trip = Trip 显示无法将“Trip.Type”类型的值分配给“Trip”类型
  • @hellosheikh (Your Trip Object) 指的是您想要传递给TripPreviewTableViewControllerTrip实例
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多