Chr*_*ris 8 iphone xcode swift
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.selectedClubState = stateNamesForDisplay[indexPath.row]
self.performSegueWithIdentifier ("Cities", sender: self)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
var clubsToPassToCitiesViewController = [clubObject]()
if segue.identifier == "Cities" {
for club in clubsForTable{
if club.clubState == self.selectedClubState{
clubsToPassToCitiesViewController.append(club)
}
}
let citiesView = segue.destinationViewController as? citiesViewController
citiesView?.clubsForChosenCity = clubsToPassToCitiesViewController
}
}
Run Code Online (Sandbox Code Playgroud)
Segue正在执行两次,导致下一个VC.我怎样才能防止这种情况发生?
mat*_*att 12
你是两次执行segue的人 - 一次自动在故事板中(因为你的segue从单元格原型中发出了一个动作Segue),而在你说的时候就是代码self.performSegueWithIdentifier.如果您不希望segue执行两次,请删除其中一个.
就个人而言,我的建议是你didSelectRow完全删除并将你的self.selectedClubState作业转移到prepareForSegue.
Sha*_*des 11
删除故事板中的当前segue.然后按CTRL- 从viewController(不是单元格)拖动到下一个视图控制器并将其命名为"Cities".现在,当您选择一个单元格时,didSelectRowAtIndexPath()将首先触发并将调用performSegueWithIdentifier()
但是,如果您要查找的didSelectRowAtIndexPath()是获取执行segue的行,则可以保持原始设置从故事板中删除单元格,删除didSelectRowAtIndexPath()并prepareForSegue()执行:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let indexPath = self.tableView.indexPathForSelectedRow {
self.selectedClubState = stateNamesForDisplay[indexPath.row]
}
var clubsToPassToCitiesViewController = [clubObject]()
if segue.identifier == "Cities" {
for club in clubsForTable{
if club.clubState == self.selectedClubState{
clubsToPassToCitiesViewController.append(club)
}
}
let citiesView = segue.destinationViewController as? citiesViewController
citiesView?.clubsForChosenCity = clubsToPassToCitiesViewController
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3300 次 |
| 最近记录: |