2016-02-29 14 views
-1

Так ультра NOOB, когда речь идет о развитии iPhoneПолучить данные из viewControllers прошивки

У меня есть три контроллера для просмотра Bar Controller в Tab. Что я хочу здесь, когда я нажимаю кнопку, данные из TextFields в первом представлении получаются и отображаются.

В моей firstViewController.h я объявил TextFields так:

IBOutlet UITextField * driver; 
IBOutlet UITextField * phone; 
IBOutlet UITextField * poe; 
IBOutlet UITextField * doe; 
IBOutlet UITextField * coe; 
IBOutlet UITextField * dod; 
IBOutlet UITextField * customer; 
IBOutlet UITextField * customerContact; 
IBOutlet UITextField * customerTank; 
IBOutlet UITextField * trailer; 
IBOutlet UITextField * truck; 

Тогда в моем Main.storyboard Я подключил выходных отверстий каждому TextField

Теперь я подумал, что нужно просто импортировать firstViewController.h в мой 3rdViewController.h с использованием #import "" и как-то проверить, когда нажата кнопка. Но это не так просто с точки зрения NOOBines.

Я думал, что делать что-то подобное в thirdViewController.h может сделать магию:

#import <UIKit/UIKit.h> 
#import "FirstViewController.h" 
@interface ThirdViewController : UIViewController{ 
NSString *theDriver = [driver.text]; 
} 
@end 
+0

У меня была эта проблема некоторое время назад. Вы можете посмотреть это решение [здесь] (http://stackoverflow.com/questions/5210535/passing-data-between-view-controllers) –

+0

Возможно, это полезно http://stackoverflow.com/questions/32979924/passing -data-from-the-firstviewcontroller-to-the-lastviewcontroller/32980270 # 32980270 – vikingosegundo

ответ

1

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

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
     if ([segue.identifier isEqualToString:@"the name of your segue"]) { 
      secondViewController *secondVC = segue.destinationViewController; 
      secondVC.driver = self.driver.text; 
      secondVC.phone = self.phone.text; 
      //continue typing your values and use this to carry this same method in your secondViewController to carry them into your thirdViewController 
} 

EDIT 1:

Вот пример Я использовал в своем приложении, где я смотрю список игр, и я хочу посмотреть на одну отдельную игру. Это код в файле MatchesViewController.m. У меня есть свой gameObject (в вашем случае gameObject будет текстовым), и я хочу отправить его на следующий контроллер представления. Я также это импортировано в «MatchesViewController.m»

#import "EachMatchViewController.h" 


- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([segue.identifier isEqualToString:@"showOneGame"]) { 
     EachMatchViewController *eachVC = segue.destinationViewController; 
     eachVC.gameObject = self.gameObject; 
    } 
} 

Это то, что определяется в моем «EachMatchViewController.h», который является контроллером представления я собираюсь.

@property (strong, nonatomic) PFObject *gameObject; 

некоторые в моем «EveryMatchViewController.m» Я могу использовать его передаваемые данные.

+0

Код, который вы предоставляете здесь, добавляется в файл FirstViewController.m, и проблема в том, что он не может найти segue.SecondViewController. Нужно ли создавать что-то дополнительное или всплывать? – mogren3000

+0

Предполагается, что это будет segue.destinationViewController независимо от того, куда вы направляетесь.Если вы используете раскадровку с segues, вам придется дать segue имя, в котором вы проверяете segue.identifier. Если вы не используете раскадровку, я бы посмотрел комментарий по вашему вопросу. Там есть куча замечательных вещей. – kygcoleman

+0

Я видел это. Кажется, я не могу получить доступ к объявленному драйверу IBOutlet UITextField *; в SecondViewController.h, и он, похоже, не находит его. Говоря, что «Свойство« драйвер »не найден на объекте типа« SecondViewController * », вы имели в виду доступ к переменной экземпляра« driver »?» – mogren3000

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