gpt4 book ai didi

ios - 通过 segue 在 View Controller 之间传递数据

转载 作者:行者123 更新时间:2023-11-28 08:23:26 25 4
gpt4 key购买 nike

我有一个 MapViewController 和一个 prepareForSegue(_:sender:) 方法,我打算用它发送数据到 LandmarkTableViewController,并在按下按钮时调用。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let destinationvc = segue.destinationViewController
if let landmarkvc = destinationvc as? LandmarkTableViewController {
if let identifier = segue.identifier {

let library = Landmark(name: "Run Run Shaw Library", properties: ["Chinese Kanji", "Gray", "Green Plants"])

let bank = Landmark(name: "Hang Seng Bank", properties: ["Chinese Kanji", "Green"])

switch identifier {
case "showLibrary" : landmarkvc.passedLandmark = library // pass data to LandmarkTableViewController
case "showBank" : landmarkvc.passedLandmark = bank // pass data to LandmarkTableViewController
default : break
}
}
}
}

LandmarkTableViewController 已正确设置为显示字符串数组 properties,每行有一个字符串。所以我打算做的是根据按下哪个按钮将表格的适当数据传递给properties,并让LandmarkTableViewController显示相应的properties.

class LandmarkTableViewController: UITableViewController {
var properties = [String]()
var passedLandmark = Landmark(name: "temp", properties: ["temp"]) // initially set to default value

override func viewDidLoad() {
super.viewDidLoad()

loadSampleProperties()
}

func loadSampleProperties() {
self.properties = passedLandmark!.properties
}
// other methods....
}

class Landmark {
var name: String
var properties: [String]

init?(name: String, properties: [String]) {
self.name = name
self.properties = properties

// Initialization should fail if there is no name or if there is no property.
if name.isEmpty || properties.isEmpty {
return nil
}
}

但是,当我运行代码时,表格 View 中只显示临时文件。我已经坚持了很长时间,所以非常感谢任何帮助!

编辑:将 viewDidLoad() 中的 loadData() 更改为正确的 loadSampleProperties()。我在将代码发布到问题时出错。

最佳答案

如果不仔细检查您的标识符,我认为这应该可以解决您的问题并且您可以通过将 print(passedLandmark) 添加到 viewDidLoad() 或断点来确保数据传递以确保您获得数据

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)        {
let destinationvc = segue.destinationViewController
if let landmarkvc = destinationvc as? LandmarkTableViewController {
if segue.identifier == "showLibrary" {

let library = Landmark(name: "Run Run Shaw Library", properties: ["Chinese Kanji", "Gray", "Green Plants"])
landmarkvc.passedLandmark = library
}
if segue.identifier == "showBank" {
let bank = Landmark(name: "Hang Seng Bank", properties: ["Chinese Kanji", "Green"])
landmarkvc.passedLandmark = bank
}
}
}

希望对你有帮助

关于ios - 通过 segue 在 View Controller 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40720351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com