私はObjective-Cの新機能で、2つのタブを持つアプリケーションを作っています。 1つのタブは加速度計とジャイロスコープを読み、ラベルとプログレスバーでこの値を表示する場所です。2番目のタブはIP、Port、ログ用のテキストフィールドなどのネットワーク設定を行うことができます。デリゲートとプロトコルを使用して2つのビュー(タブ)間でデータを渡す
いくつかの検索の後、設定タブ(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法上のエラーを取得します。私はIPアドレスのためのテキストフィールドを変更すると、それがexetudedますので、私は、メソッドhideKeyboardに次のコードを持っている私の実装ファイルで
:
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;
}
これは私のプロジェクトです。私はこの投稿に基づいているのはPassing Data between View Controllersです。
次のエラーが表示されます。「MotionViewController」の表示されない@interfaceによって、セレクタのpushViewControllerが宣言されます。
オン[self pushViewController:networkViewController animated:YES];事前にMotionViewController.h
感謝
あなたのヘッダファイル中にあなたのプロトコルで使用する前に、あなたのNetworkViewControllerを宣言転送する必要が
私の答えとコメントを使って問題を解決できますか? –