В настоящее время у меня есть приложение, в котором вы вводите одну вещь в одно представление и отображается в другом представлении. Должен ли я просто делать это, отправляя информацию в базу данных, а затем получая ее на другом представлении или есть способ напрямую передать эту информацию?iOS, передающий информацию с разных контроллеров view swift
ответ
Если вы используете раскадровку, посмотрите в перетекает
В настоящее время я делаю все программно. Есть ли другой способ? – tryingtolearn
Лучший способ передавать информацию от одного к другому 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 {
Спасибо за подробный ответ.Есть ли ссылка на учебник, который вы можете разместить здесь? – tryingtolearn
Это был ответ от меня по другому вопросу. Но есть много учебников: https://www.raywenderlich.com/113394/storyboards-tutorial-in-ios-9-part-2 – derdida
, если Вы делаете это программно, то вы можете дать ваш диспетчер вида назначения - идентификатор в раскадровке, и когда вы перейдете к 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)
@EricAya Спасибо за подсказку! Я сделаю так, чтобы этого не случилось. – tryingtolearn