2016-01-23 1 views
1

У меня есть таблицаView (не статические ячейки) с двумя разделами Секция бара и секция клуба (и каждая из них имеет несколько ячеек). Я хочу, чтобы каждая ячейка из того же раздела переходила в один и тот же диспетчер представлений.xcode - prepareForSegue с несколькими идентификаторами

Я могу получить только первый, никогда не последний. Даже ячейки из второго раздела идут к первому диспетчеру просмотра.

Может ли кто-нибудь увидеть мою ошибку?

override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    // #warning Incomplete implementation, return the number of sections 
    return 2 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    // #warning Incomplete implementation, return the number of rows 
    if section == 0 { 
    return areas.bars.count 
    } else { 

    return areas.clubs.count 
} 
} 


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCellWithIdentifier("mainIdentifier", forIndexPath: indexPath) 
    if indexPath.section == 0 { 
     let bars = areas.bars 
     let bar = bars[indexPath.row] 

     cell.textLabel?.text = bar.name 

     return cell 
    } else { 
     let clubs = areas.clubs 
     let club = clubs[indexPath.row] 

     cell.textLabel?.text = club.name 

     return cell 
    } 
} 

переход:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "barsandclubsIdentifier"{ 
     let selectedIndex = self.tableView.indexPathForSelectedRow! 
     let selectedBar = self.areas.bars[selectedIndex.row] 
     let detailBarsAndClubsViewController = segue.destinationViewController as! DetailBarOrClubViewController 
    detailBarsAndClubsViewController.bars = selectedBar 
    } 
    else { 
     let selectedIndex = self.tableView.indexPathForSelectedRow! 
     let selectedClub = self.areas.clubs[selectedIndex.row] 
     let detailBarsAndClubsTwoViewController = segue.destinationViewController as! DetailBarOrClubTwoViewController 
     detailBarsAndClubsTwoViewController.clubs = selectedClub 

    } 
+0

Что происходит, когда вы щелкаете по ячейке? –

+0

ячейки в разделе 0 перейдите в DetailBarOrClubViewController, и ячейкам в разделе нужно перейти к другому. На данный момент все они идут в DetailBarOrClubViewController. –

+0

Сколько динамических ячеек прототипа у вас есть в вашем раскадровке? Если вы повторно используете одну и ту же ячейку для обоих разделов, она будет переходить только к одному из контроллеров представления. –

ответ

0

Каждая клетка прототип может непосредственно перейти только к одному ViewController. Если у вас есть 2 разных режима просмотра viewControllers, вам нужны 2 прототипа: 1 для баров и 1 для клубов. Дайте им каждый уникальный идентификатор, такой как "barCell" и "clubCell".

Тогда в cellForRowAtIndexPath, из очереди правильной ячейки:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 

    let cellID = ["barCell", "clubCell"][indexPath.section] 

    let cell = tableView.dequeueReusableCellWithIdentifier(cellID, forIndexPath: indexPath) 

Затем вы можете подключить каждый прототип ячейку, чтобы перейти к соответствующему ViewController. Дайте каждому из этих двух segues уникальный идентификатор, такой как "barSegue" и "clubSegue", а затем вы можете использовать их в prepareForSegue для настройки целевого viewController.

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "barSegue"{ 
     let selectedIndex = self.tableView.indexPathForSelectedRow! 
     let selectedBar = self.areas.bars[selectedIndex.row] 
     let detailBarViewController = segue.destinationViewController as! DetailBarViewController 
     detailBarsViewController.bars = selectedBar 
    } 
    else if segue.identifier = "clubSegue" { 
     let selectedIndex = self.tableView.indexPathForSelectedRow! 
     let selectedClub = self.areas.clubs[selectedIndex.row] 
     let detailClubViewController = segue.destinationViewController as! DetailClubViewController 
     detailClubsViewController.clubs = selectedClub 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^