Ios 在didSelectRowAtIndexPath之后如何运行prepareForSegue?
我正在尝试获取用户单击的Ios 在didSelectRowAtIndexPath之后如何运行prepareForSegue?,ios,swift,Ios,Swift,我正在尝试获取用户单击的indexPath.row,然后检查我的数组以从该indexPath.row返回字符串,然后通过preparforSegue发送字符串。。。。但它不起作用。我认为该程序在didselectRowatIndexPath之前运行preparForSegue。。。我该怎么做 我的代码: import UIKit import Parse class CategoriaTableViewController: UITableViewController { var quer
indexPath.row
,然后检查我的数组以从该indexPath.row
返回字符串,然后通过preparforSegue发送字符串。。。。但它不起作用。我认为该程序在didselectRowatIndexPath
之前运行preparForSegue。。。我该怎么做
我的代码:
import UIKit
import Parse
class CategoriaTableViewController: UITableViewController {
var queryArray: [PFObject] = [PFObject]()
var escolha = 5
override func viewDidLoad() {
super.viewDidLoad()
var query = PFQuery(className:"Categorias")
//querycomlocalidade
query.findObjectsInBackgroundWithBlock {
(objects: [AnyObject]?, error: NSError?) -> Void in
if error == nil {
println("Successfully retrieved \(objects!.count) Restaurantes.")
if let _objects = objects as? [PFObject] {
self.queryArray = _objects
self.tableView.reloadData()
}
} else {
println("Error: \(error!) \(error!.userInfo!)")
}
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Potentially incomplete method implementation.
// Return the number of sections.
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete method implementation.
// Return the number of rows in the section.
return queryArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CategoriaTableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("ceculaCategoria", forIndexPath: indexPath) as! CategoriaTableViewCell
let categoria = queryArray[indexPath.row] as! PFObject
//Insere texto
cell.tituloCecula.text = categoria.objectForKey("nome") as! String
//Insere imagens no tableview
if let categoriaImagem = categoria.objectForKey("imagem") as? PFFile {
categoriaImagem.getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in
if (error == nil) {
cell.imagemCecula.image = UIImage(data:imageData!) }
}
}
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
escolha = indexPath.row
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var detailScene = segue.destinationViewController as! ListaTableViewController
if let indexPath = self.tableView.indexPathForSelectedRow() {
let row = Int(indexPath.row)
let categoriaEscolhida = queryArray[escolha] as PFObject
//Insere texto
detailScene.categoria = categoriaEscolhida.objectForKey("nome") as! String
}
}
}
您需要在两个视图控制器之间创建segue并手动触发它:
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
escolha = indexPath.row
self.performSegueWithIdentifier("push", sender: self)
}
如果您已直接从故事板中的单元格链接了segue,则在触发segue之前,
DidSelectRowatineXpath
将不会执行
您可以做的是创建一个segue,方法是按Ctrl键从情节提要中的view controller对象拖动到目标场景,并像处理任何其他segue一样为segue指定一个标识符。从您的手机中删除该序列
现在,您可以调用performsguewithidentifier
来触发segue并传递被选为发送方的对象
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
// tableView.deselectRowAtIndexPath(indexPath) // Optionally deselect the row for a cleaner appearance
self.performSegueWithIdentifier("mySegueIdentifier", sender: queryArray[indexPath.row])
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let detailScene = segue.destinationViewController as? ListaTableViewController {
let categoriaEscolhida = sender as! PFObject
detailScene.categoria = categoriaEscolhida.objectForKey("nome") as! String
}
}
连同
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:"push"]) {
// Code
}
如果您忽略escolha而使用queryArray[row]?这样我怎么知道他选择了哪一行?您知道,因为您正在调用
indexPathForSelectedRow
。该行包含该行的索引。我怎么会错过该行的索引。。。非常感谢。
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:"push"]) {
// Code
}