Я новичок в Objective-C, и я создаю приложение с двумя вкладками. На одной вкладке я считываю акселерометр и гироскоп и отображаю эти значения с помощью меток и индикаторов выполнения, вторая вкладка - это то, что я могу сделать некоторые сетевые настройки, такие как IP, Port, есть также текстовое поле для журналов.Использование делегатов и протоколов для передачи данных между двумя видами (вкладки)
После некоторых поисков я обнаружил, что наилучшим вариантом для передачи данных с вкладки настроек (NetworkViewController) и первой вкладки (MotionViewController) является использование делегатов и протоколов.
Это мой NetworkViewController.h:
@protocol ViewControllerNetworkDelegate <NSObject>
- (void)PassDataToViewController:(NetworkViewController *)controller didFinishEnteringItem:(NSString *)item;
@end
@interface NetworkViewController : UIViewController
@property (nonatomic, weak) id<ViewControllerNetworkDelegate> delegate;
@property (strong, nonatomic) IBOutlet UITextField *addressField;
@property (strong, nonatomic) IBOutlet UITextField *portField;
@property (strong, nonatomic) IBOutlet UITextView *logField;
- (IBAction)toggleUDP:(id)sender;
- (IBAction)hideKeyboard:(id)sender;
@end
Исправлено: Я получаю сообщение об ошибке на методе PassDataToViewController говоря "Прогнозный типа".
В моем файле реализации у меня есть следующий код в методе hideKeyboard поэтому он получает exetuded, когда я изменить текстовое поле для IP-адреса:
NSString *itemToPassBack =addressField.text;
[self.delegate PassDataToViewController:self didFinishEnteringItem:itemToPassBack];
MotionViewController.h:
#import "NetworkViewController.h"
@interface MotionViewController : UIViewController <ViewControllerNetworkDelegate>
MotionViewController.m
- (void)viewDidLoad
{
NetworkViewController *networkViewController = [[NetworkViewController alloc] initWithNibName:@"MotionViewController" bundle:nil];
networkViewController.delegate = self;
[self pushViewController:networkViewController animated:YES];
}
- (void)PassDataToViewController:(id)controller didFinishEnteringItem:(NSString *)item{
NSString *host= item;
}
Это соответствующий код I, мой проект, i t на основе этой должности Passing Data between View Controllers.
Я получаю следующее сообщение об ошибке: Нет видимых @interface для 'MotionViewController' объявляет селектор»pushViewController анимированные
на [себе pushViewController: networkViewController анимированные: YES]; в MotionViewController.h
Большое спасибо заранее
Не могли бы вы решить вашу проблему, используя свой ответ и комментарии? –