gpt4 book ai didi

swift - 基于 Swift 中的列表选择在 ViewController 之间传递值

转载 作者:可可西里 更新时间:2023-10-31 23:56:38 25 4
gpt4 key购买 nike

我正在尝试将 listView 选择的选定索引号从一个 ViewController 传递到另一个 ViewController,但我遇到了一个问题,tableView didSelectRowAtIndexPath 委托(delegate)比 prepareForSegue 函数稍晚运行。

基本上,在 didSelectRowAtIndexPath 中,我设置了一个变量,然后在 prepareForSegue 中获取该变量。问题是 prepareForSegue 似乎在单元格被选中的那一刻和 didSelectRowAtIndexPath 函数被调用之前运行,所以我的变量没有被传递。

我的主要代码是:

tableView didSelectRowAtIndexPath 委托(delegate),设置“selectedResult”...

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
selectedResult = indexPath.item
txtNameSearch.resignFirstResponder() //get rid of keyboard when table touched.
println("saved result")


//tableView.deselectRowAtIndexPath(indexPath, animated: false)
//var tappedItem: ToDoItem = self.toDoItems.objectAtIndex(indexPath.row) as ToDoItem
//tappedItem.completed = !tappedItem.completed
//tableView.reloadData()

}

prepareForSegue 函数将变量作为“toPass”发送到另一个 ViewController(“detailViewController”):

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!){
if (segue.identifier == "detailSeque") {
println("preparing")
var svc = segue!.destinationViewController as detailViewController
svc.toPass = selectedResult

//println(tableView.indexPathsForSelectedRows().
//svc.toPass = tableView.indexPathForSelectedRow()

}
}

提前致谢

最佳答案

如果您的 ViewController 中有 tableView 的导出,您可以在 prepareForSegue 中调用 indexPathForSelectedRow

如果您的 ViewControllerUITableViewController 的子类,那么您可以:

    let row = self.tableView.indexPathForSelectedRow().row
println("row \(row) was selected")

如果您的 ViewController 不是 UITableViewController 的子类,请在您的 UITableView 中设置一个 IBOutlet View Controller :

@IBOutlet var tableView: UITableView!

并将其连接到 Interface Builder 中并从 prepareForSegue 中调用它,如上所示。

关于swift - 基于 Swift 中的列表选择在 ViewController 之间传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25368245/

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