2016-01-23 54 views
1

我有一个tableView(不是静态单元格)与两个部分 酒吧部分和俱乐部部分(每个都有几个单元格)。我希望来自同一部分的每个单元格都转到同一个视图控制器。xcode - prepareForSegue与多个标识符

我只能访问第一个,从来没有最后一个。即使从第二部分的de单元转到第一个viewcontroller。

有人能看到我的错误吗?

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

的SEGUE:

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

你的故事板中有多少个动态原型单元?如果两个部分重复使用同一个单元格,则它只会继续使用其中一个视图控制器。 – 2016-01-23 22:12:53

回答

0

每个原型细胞只能原因请看到单个的viewController。如果您有两个不同的目标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。给这两个赛段中的每一个分配唯一的标识符,例如"barSegue""clubSegue",然后可以使用prepareForSegue中的那些设置目标视图控制器。

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