2015-04-21 2 views
0

Другой вопрос о нобе, но я мог бы действительно помочь с этим. Я ищу способ иметь список ячеек в представлении таблицы динамического прототипа и каждую ячейку, чтобы перейти к новому контроллеру представления. Мне удалось сделать это примерно до 75%: /. В основном я заработал, но он всегда загружает первую ячейку сначала, потому что ее идентификатор повторного использования называется ячейкой. Есть ли способ заставить каждый из них просто загрузить контроллер просмотра, который я хочу? (Код ниже)условный Segue в динамических ячейках прототипа

Благодаря Сэм

Edit 1: Я изменил код, как он выглядит теперь ниже. Но контроллер просмотра Alton Barnes по-прежнему загружается, перед которым когда-либо вы нажимаете и хотите видеть ячейку.

import UIKit 

class LocalAttractionsTableViewController: UITableViewController { 
@IBOutlet weak var menuButton: UIBarButtonItem! 

var Locations = ["Alton Barnes White Horse","Avebury","Barbury Castle","Bowood","Broad Town White Horse","Caen Locks","Cherhill White Horse","Corsham Court","Devices white Horse","Dragon Hill","Hackpen Hill White Horse","Iford Manor","Lacock","Longleat House","Longleat Safari Park","Marlborough white Horse","Pewsey White Horse","Salisbury Cathedral","Sheldon Manor","Silbury Hill","Stonehenge","The Barge Inn","Uffington White Horse","Westbury White Horse","West Kennet Long Barow","Wilton Windmill","Woodhenge"] 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Side Menu 
    if self.revealViewController() != nil { 
     menuButton.target = self.revealViewController() 
     menuButton.action = "revealToggle:" 
     self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer()) 
    } 
    tableView.backgroundColor = UIColor.grayColor() 
    tableView.tableFooterView = UIView(frame:CGRectZero) 
} 
override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return 27 
} 

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return Locations.count 
} 

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell 

    cell.textLabel!.text = Locations[indexPath.row] 
    cell.backgroundColor = UIColor.clearColor() 
    return cell 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) 
{performSegueWithIdentifier(Locations[indexPath.row], sender:self); 
} 
} 
+0

В вашем столе 27 разделов. Из вашего кода вырезано не ясно, что вы делаете с этими разделами. «IndexPath» состоит из раздела и компонента строки, где строка начинается снова с 0 для каждого раздела. – zisoft

+0

Теперь я редактировал код. Пожалуйста, просмотрите его – ShizukaNaHaji

+0

Все еще неясно: почему 27 разделов? Вам не нужны разделы в вашей модели данных, ни в 'cellForRowAtIndexPath'. Вы даже не создаете заголовки раздела предметов первой необходимости. Для меня это выглядит как плоский стол с 1 секцией. – zisoft

ответ

0

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

Если у вас есть ctrl-перетаскивание segue из ячейки прототипа в InterfaceBuilder, этот сеанс выполняется без кода. Затем в вашем коде вы вызываете performSegueWithIdentifier(...), что вызывает запуск другого таймера.

Вам нужно ctrl-перетащить все сегменты из значка tableViewController в InterfaceBuilder в целевой viewControllers, а затем дать им идентификаторы.

0

вы создали SEGUE с именем идентификатора: Alton. Вместо того, чтобы «Альтон» вам нужно переименовать идентификатор SEGUE в Alton Barnes White Horse, позже вам нужно сделать:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {performSegueWithIdentifier(Locations[indexPath.row], sender:self); 
+0

Благодарим за помощь, что до сих пор приводило в порядок код, а не массивный список коммутаторов. Однако, когда я нажимаю на Avebury, например, Alton Branes все еще загружается до Avebury. Если вы вернетесь назад, то Avebury -> Alton Barnes -> Table view, а не просто Aebury -> Table view. Любые идеи о том, как обойти это? Может ли это быть чем-то связанным с Альтоном Барнсом, находящимся в tableviewcell с идентификатором Cell? – ShizukaNaHaji

+0

Плохая идея назвать секвенции в соответствии с вашими строками данных, потому что строки данных могут быть совершенно разными в локализованном приложении на разных языках. – zisoft

+0

ОК, что вы предлагаете? @zisoft –

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