gpt4 book ai didi

uitableview - 选择一个TableView Cell后,在Swift中将数据回传给之前的View Controller

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

网上似乎有很多教程,但我找不到将值从 TableView Controller 传回第一个 View Controller 的教程。

这是我的设置...第一个 ViewController 有一个文本字段,当用户按下它时,它会将他们带到第二个 TableViewController,他们可以从列表中选择一个国家/地区。一旦他们选择了它,我希望他们按下导航栏上的完成按钮,然后我希望它返回到第一个 ViewController 并在文本字段中显示他们选择的国家(准备好让他们按下按钮和应用程序继续等...)

据我所知,我需要在 DidSelectRowAtIndexPath 方法中执行此操作...?但我也一直看到关于放松 segues 的讨论?抱歉,我是 Swift 和 iOS 代码的新手,所以希望能明确回答什么是最好和最简单的方法。请在下面为每个 Controller 查看我的代码:

View Controller

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet var textField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()

}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {

performSegueWithIdentifier("countryTableView", sender: self)

return false

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

}

表格 View Controller

import UIKit

class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet var tabeView: UITableView!

var countryPicker = ["Colombia", "England", "France", "Germany", "Brazil", "Austria", "Spain", "Australia", "USA", "Berlin", "Thailand", "Northern Ireland", "New Zealand", "Hawaii", "Switzerland", "Sweeden", "Finland", "Turkey", "Russia", "Netherlands", "Japan"]

override func viewDidLoad() {
super.viewDidLoad()

}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {

return countryPicker.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("UITableViewCell") as! UITableViewCell

cell.textLabel!.text = countryPicker[indexPath.row]

cell.selectionStyle = UITableViewCellSelectionStyle.Blue

return cell
}

}

提前致谢!

最佳答案

添加一个 weak var previousVC: UIViewController 在你的第二个 View Controller (你的 TableView Controller )中包含你以前的 View Controller 。在转到你的第二个 View Controller 之前,在你的第一个 View Controller 中添加一个 prepareForSegue 方法,然后使用 let destinationVC = segue.destinationViewController 然后 destinationVC 访问你的第二个 View Controller .previousVC = self。您现在可以访问您以前的 Controller ,您可以通过向您的第一个 View Controller 添加一个属性来传递您想要的任何数据。

代码:

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet var textField: UITextField!

var myObject: Object? // Some object you will pass
override func viewDidLoad() {
super.viewDidLoad()

}

func textFieldShouldBeginEditing(textField: UITextField) -> Bool {

performSegueWithIdentifier("countryTableView", sender: self)

return false

}
...

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "countryTableView" {
let tableVC = segue.destinationViewController as! TableViewController
// Pass the object
tableVC.passedObject = myObject
}
}
}


class TableViewController.... {
var passedObject: Object // The object to be passed
...
}

关于uitableview - 选择一个TableView Cell后,在Swift中将数据回传给之前的View Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30654439/

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