Oli*_*cer 2 tableview viewcontroller segue swift
我正在尝试将listView选择的选定索引号从一个ViewController传递到另一个ViewController但遇到问题时,tableView didSelectRowAtIndexPath委托比prepareForSegue函数稍晚运行.
基本上,在didSelectRowAtIndexPath中,我选择变量,然后在prepareForSegue中获取.问题是prepareForSegue似乎运行第二个选择单元格,并且在调用didSelectRowAtIndexPath函数之前,所以我的变量没有被传递.
我的主要代码是:
tableView didSelectRowAtIndexPath委托,设置'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()
}
Run Code Online (Sandbox Code Playgroud)
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()
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
vac*_*ama 11
如果您在具有出口到您的tableView ViewController,你可以调用indexPathForSelectedRow的prepareForSegue.
如果你ViewController是你的子类UITableViewController,你可以这样做:
let row = self.tableView.indexPathForSelectedRow().row
println("row \(row) was selected")
Run Code Online (Sandbox Code Playgroud)
如果你ViewController是不是类的子类UITableViewController,建立一个IBOutlet到UITableView您的视图控制器:
@IBOutlet var tableView: UITableView!
Run Code Online (Sandbox Code Playgroud)
然后在Interface Builder中连接并从prepareForSegue上面的show中调用它.
| 归档时间: |
|
| 查看次数: |
12538 次 |
| 最近记录: |