2016-08-20 5 views
0

В настоящее время у меня есть приложение, в котором вы вводите одну вещь в одно представление и отображается в другом представлении. Должен ли я просто делать это, отправляя информацию в базу данных, а затем получая ее на другом представлении или есть способ напрямую передать эту информацию?iOS, передающий информацию с разных контроллеров view swift

+1

@EricAya Спасибо за подсказку! Я сделаю так, чтобы этого не случилось. – tryingtolearn

ответ

0

Если вы используете раскадровку, посмотрите в перетекает

+0

В настоящее время я делаю все программно. Есть ли другой способ? – tryingtolearn

0

Лучший способ передавать информацию от одного к другому ViewController являются перетекает.

Вы можете использовать его, как это:

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

    if(segue.identifier == "yourIdentifierInStoryboard") { 

     let yourNextViewController = (segue.destinationViewController as yourNextViewControllerClass) 
     yourNextViewController.value = yourValue 

И в своем классе yourNextViewController.

class yourNextViewControllerClass { 

    var value:Int! // or whatever 

Вы можете также назвать программным:

self.performSegueWithIdentifier("yourIdentifierInStoryboard", sender: self) 

значения Набор из вашего DestinationViewController обратно к начальной (первой) ViewController

1. Реализовать протокол, например, создайте файл с именем protocol.swift.

protocol changeUserValueDelegate { 
     func changeUser(toValue:Bool) 
    } 

2. установить делегат на втором View

class yourNextViewControllerClass { 

    var delegate:changeUserValueDelegate? 

3. установить делегат от нагрузки (prepareForSegue)

if(segue.identifier == "yourIdentifierInStoryboard") { 

     var yourNextViewController = (segue.destinationViewController as yourNextViewControllerClass) 
     yourNextViewController.delegate = self 

4. добавить функции to FirstViewController

func changeUser(toValue:Bool) { 
     self.currentUserValue = toValue 
    } 

5. вызов этой функции из вашего SecondViewController

 delegate?.changeUser(true) 

6. Установите делегат в вашей FirstViewController

class FirstViewController: UIViewController, ChangeUserValueDelegate { 
+0

Спасибо за подробный ответ.Есть ли ссылка на учебник, который вы можете разместить здесь? – tryingtolearn

+0

Это был ответ от меня по другому вопросу. Но есть много учебников: https://www.raywenderlich.com/113394/storyboards-tutorial-in-ios-9-part-2 – derdida

0

, если Вы делаете это программно, то вы можете дать ваш диспетчер вида назначения - идентификатор в раскадровке, и когда вы перейдете к Viewcontroller, получите этот диспетчер представлений, используя этот идентификатор entifier и добавить свойство ко второму контроллеру представления, чтобы получить текст, который вы написали

Пример:

  let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle()) 
      let secondViewController = storyBoard.instantiateViewControllerWithIdentifier("secondViewControllerIdentifier") as! UserBasicInfoViewController 
      secondViewController.Text = self.textField.text 
      self.navigationController?.pushViewController(userProfile, animated: true) 

Или

 self.presentViewController(secondViewController, animated: true, completion: nil)