我有实现的委托方法将数据从 FirstViewController 传递到 SecondViewController 。
首先,我在FirstViewController中创建了文本字段和按钮。其次,我创建了一个标签来显示SecondViewController中的数据。
如何运作:
用户将按FirstViewController
中的按钮,它会将数据传递给secondViewController
。此外,用户将使用 UISwipeGestureRecognizer 导航到第二个视图控制器,因此无需使用按钮转到第二个视图控制器。
我如何测试应用
1- 我运行应用。 - > 2- 我在文本字段中输入“Hello” - > 3- 我按下按钮 - > 4- 我滑动到第二个视图控制器以查看数据 - > 5- 我在标签中看不到任何数据?
首先我创建了委托协议
FirstViewController.h
@class FirstViewController;
@protocol FirstControllerDelegate
-(void) updateLabel:(NSString*)string
@end
@property (weak, nonatomic) id<FirstViewControllerDelegate>delegate;
@property (weak, nonatomic) IBOutlet UITextField *TextField;
- (IBAction)button:(id)sender;
FirstViewController.m
@interface FirstViewController. ()
@end
@implementation ViewController1
@synthesize delegate;
@synthesize TextField;
-(void)viewDidLoad{
[super viewDidLoad];
}
- (IBAction)Button:(id)sender {
ViewController2 *vc2 = [[ViewController2 alloc] init];
vc2.stringfromTextfield1 = self.TextField.text;
}
SecondViewController.h
#import "SecondViewController.h"
#import "FirstViewController.h"
@interface SecondViewController : UITableViewController<FirstControllerDelegate>
@end
@property (weak, nonatomic) IBOutlet UILabel *Label;
@property (strong, nonatomic) NSString *stringfromTextfield1;
SecondViewController.m
@interface SecondViewController. ()
@end
@implementation SecondViewController
-(void)viewDidLoad{
[super viewDidLoad];
self.label.text = self.stringfromTextfield1;
}
感谢您花时间和精力帮助我
答案 0 :(得分:1)
您可以使用Singleton
类,或者使用extern NSString
将字符串值1移动到第二个View Controller。
在第一个视图控制器中。
extern NSString *MyStr;
在@interface
中定义它。
@interface{
NSString *MyStr;
}
在@Implementation
中指定您想要的值。
和第二个视图控制器只是#import
第一个视图和使用,
MyStr
作为变量,它的值也来自第一个视图控制器。
这件事对我有用。
答案 1 :(得分:1)
或者只是添加一个AppDelegate属性来将变量存储在两个ViewControllers中:
AppDelegate *appDel=[[UIApplication sharedApplication] delegate];
appDel.variable=@"text";
答案 2 :(得分:1)
您可以将数据保存在App委托中,并通过应用程序中的视图控制器访问它。您必须创建一个app delegate的共享实例。
AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
喜欢这个
假设您声明了NSString object *str
,那么您可以通过appDelegate.str