2015-08-19 5 views
1

Я ищу для выполнения двух разных сегментов.Быстрый переход к предыдущему VC с данными

У меня есть VC, который вводится «Настоящее модно». Из этого VC у меня есть другой segue (Push), ведущий к TableView VC.

Задача 1

Я хочу, чтобы иметь возможность вернуться из табличного представления предыдущего VC, как только вы касаетесь строки. Поэтому моя проблема заключается в том, что я не знаю, какой тип segue следует использовать, чтобы вернуться на один шаг, но также одновременно отправить данные.

У меня есть кнопка с кнопками «разматывать до VC», но это только закрытие моего VC.

Задача 2

С TableView У меня есть еще один SEGUE (толчок), что приводит к другому TableView VC. - Вы выбираете категорию, а затем подкатегорию. Моя проблема в том, что я не знаю, как вернуться на один шаг или как сделать segue на VC1, который отправляет информацию с обоих контроллеров табличного вида.

Благодаря

+0

Посмотрите на этот пост, он может помочь: http://stackoverflow.com/questions/12569316/does-anyone-know-what-the-new -exit-icon-is-used-for-when-editing-storyboards-usi –

ответ

5

Проблема 1:

В верхней части класса YourTableViewController (не внутри класса, а на верхнем значении снаружи) реализации следующего протокола:

protocol MyTableViewControllerDelegate { 
func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) 
} 

Тогда вам необходимо выполнить следующие действия : В вашей таблице Просмотр класса контроллера (YourTableViewController) реализует следующие:

слабый делегат var: MyTableViewControllerDele Ворота? \ стиль для реализации делегатов.

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

let itemYouWantToPassBackToVC: SomeItemYouWantToPassBack = dataImplementedInTableView[indexPath.row] 
delegate?.tableViewController(self, didFinishPickingItem item: itemYouWantToPassBackToVC) 

dismissViewControllerAnimated(true, completion: nil) 


tableView.deselectRowAtIndexPath(indexPath, animated: true) 


} 

затем в предыдущей VC вы реализуете функцию, созданную в протоколе:

func tableViewController(controller: YourTableViewController, didFinishPicking Item item: SomeItemYouWantToPassBack) { 

// Here you take the "item" parameter and use it for your purpose. It is the item you wanted to pass back here 

} 

В дополнение читать документацию яблока, чтобы узнать больше о протоколах и делегатов.

Задача 2:

OK ... в данном случае я хотел бы предложить следующее: реализовать следующую функцию в VC1:

@IBAction func unwindToVC1() { 
\\you can leave this place empty 
} 

Затем, обратите внимание на эти слова: В раскадровку находке контроллер просмотра для TableView номер 2 (тот, который показывает все подкатегории), а поверх него вы увидите три кнопки. CTRL + перетащите желтый цвет в красную выходную дверь и выберите «unwindToVC1» из всплывающего окна.

В документе Outline (вид списка, отображающий все, что у вас есть в storyBoard) найдите вновь созданный сегмент и дайте ему имя, скажем, «segueVC1».

Тогда в TableViewControllerNumberTwo осуществить это:

override func tableView(tableView: UITableView, didSelectItemAtIndexpath indexPath: NSIndexPath) { 

    let item1 = yourDataModel[indexPath.row] 
    performSegueWithIdentifier("segueVC1", sender: item1) 

} 

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 

    if let segue.identifier == "segueVC1" { 
    let vc = segue.destinationViewController as VC1 \\ VC1 is the first vc you want to segue to 
    vc.modelToReceive = sender as modelToReceiveClass 

} 
} 
+1

Большое вам спасибо! Отлично! –

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