2016-01-23 55 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 
    } 
}