我是Objective-C中的新成员,我制作的应用程序有两个选项卡。一个选项卡是我读出加速度计和陀螺仪的地方,并显示带有标签和进度条的值,第二个选项卡是我可以设置IP,端口等网络设置,还有一个日志文本框。使用委托和协议在两个视图(选项卡)之间传递数据
经过一番搜索,我发现从我的设置选项卡(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代码,所以当我更改IP地址的文本框它被exetuded:
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;
}
这是相关的代码我的项目,我t的基于文章Passing Data between View Controllers。
我获得以下错误: 'MotionViewController' 不可见@interface声明选择” pushViewController动画
在[自pushViewController:networkViewController动画:是];在MotionViewController.h
提前感谢
你可以使用我的答案和评论来解决你的问题吗? –