2016-09-05 15 views
1
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 
    } 
} 

Segueが次回のVCに2回実行されています。これを防ぐ方法を教えてください。あなたがself.performSegueWithIdentifierを言うとき、コードに一度(あなたのセグエは、セルのプロトタイプからアクションセグエとして出てくるので)、そして一度自動的にストーリーボードで -Segueが2回実行されています

答えて

5

あなたは二回セグエを実行する1つです。 segueを2度実行したくない場合は、それらのうちの1つを削除します。

個人的には、didSelectRowを完全に削除し、self.selectedClubState割り当てをprepareForSegueに移動することをおすすめします。

2

ストーリーボードの現在のセグを削除します。次にビューコントローラ(セルではない)から次のビューコントローラにCTRLキーを押しながらをドラッグし、「都市」という名前を付けます。さて、あなたはセルを選択すると、didSelectRowAtIndexPath()が最初に起動されますと、あなたがdidSelectRowAtIndexPath()に行うために探しているすべてのセグエを行った行を取得している場合は、しかし、performSegueWithIdentifier()

enter image description here

を呼び出します、することができます、ストーリーボードからセルセグエを持っていることのあなたの元の設定を維持didSelectRowAtIndexPath()を削除し、prepareForSegue()で行う:私はちょうど、細胞からの私のセグエを削除して、ストーリーボードから1をドラッグする必要がありました@Shades

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 
    } 
} 
+0

感謝を! – Chris

+1

@Chrisこれは回答済みとマークする必要があります –

関連する問題