2015-03-11 2 views
1

В моем TableviewController У меня есть элемент кнопки на панели в верхнем правом углу. После нажатия кнопки отображается новый контроллер вида. В этом контроллере я ввожу некоторые данные в текстовые поля и сохраняю их. Чтобы сохранить эти данные, я должен щелкнуть по кнопке, которая также является элементом кнопки в правом углу.Xcode Swift Возврат к предыдущему видуController (TableViewController)

Но теперь он делегирует мне первый вид контроллера моего приложения. Что я сделал, чтобы он передал меня обратно контроллеру таблицы?

EDIT:

Когда я использую следующий код, приложение дает мне ошибку EXC_Breakpoint: (code=IEXC_386..) и он идет к контроллеру вида TeamOverviewController

var vc = self.storyboard?.instantiateViewControllerWithIdentifier("TeamOverviewController") as ViewController 
self.navigationController?.popToViewController(vc, animated: true) 
+2

Не могли бы вы показать код? –

+0

ОтклонитьViewControllerAnimated (true, completion: noil) –

ответ

2

Если вы используете UINavigationController вы можете сразу выскочить в viewController что вам нужно.

Пример: [self.navigationController popToViewController:TableViewController animated:YES];

3

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

  1. Я использую TableViewController с кнопкой в ​​верхнем правом углу под названием «Далее». Когда нажимается Next, отображается ViewController, в который вы можете поместить любые элементы управления вводом.
  2. ViewController также имеет кнопку «Сохранить» в верхнем правом углу.
  3. Оба контроллера встроены в навигационные контроллеры для облегчения навигации
  4. Когда нажата кнопка «Сохранить», она возвращается в TableViewController после сохранения любых данных, которые необходимо сохранить.
  5. В TableViewController вам нужно добавить функцию IBAction которую назвал unwindToThisViewController Здесь вы направляетесь, когда вы нажмите кнопку Сохранить в ViewController
  6. В ViewController вам нужно Ctrl-Drag от кнопки Сохранить в значок выхода (третий значок в раскадровке ViewController). Когда вы это сделаете, вы получите вариант выпадающего списка с именем unindToThisViewController как представляющий сегмент, который вы должны выбрать. Теперь ваш ViewController подключен к процессу размотки.
  7. В ViewController не помещайте кнопку IBActon для кнопки «Сохранить». Вместо этого добавьте свои команды сохранения в функцию prepareForSegue.

Вот код для 2-х контроллеров:

// 
// TableViewController.swift 

import UIKit 

class TableViewController: UITableViewController { 

    // add this function. When the detail ViewController is unwound, it executes this 
    // function 

    @IBAction func unwindToThisViewController(segue: UIStoryboardSegue) { 
     println("Returned from detail screen") 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Table view data source 

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
     // Return the number of sections. 
     return 1 
    } 

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {   
     // Return the number of rows in the section. 
     return 3 
    } 


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

     // Configure the cell... 
     cell.textLabel!.text = "Row: \(indexPath.row)" 
     return cell 
    } 


} 

    // 
// ViewController.swift 
// Detail View 

import UIKit 

class ViewController: UIViewController { 

    // When Save button is clicked, view controller is segued to the TableViewController to the function 
    // unwindToThisViewController 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // Do any additional setup after loading the view. 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    // MARK: - Navigation 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     // Insert your save data statements in this function 
     println("Insert your save data statements in this function") 
    } 


} 
+1

Эй, спасибо за ваш комментарий. это сработало для меня;) Я также попробовал другой код: self.navigationController? .popViewControllerAnimated (true) Я поместил эту строку кода в конце моей функции сохранения, и это также работает. –