我正在创建一个没有Storyboard的iOS应用,在AppDelegate中设置窗口的框架。
现在,我有2个视图控制器ViewController和SettingsController。在设置控制器中,我创建了一个文本字段(myTextField),我想将myTextField.text存储在变量中。 我该怎么办?
答案 0 :(得分:0)
您可以在AppDelegate文件中创建一个公共属性
@property(nonatomic,strong) NSString *passingText;
1。 ViewController 2导入Appdelegate:
@interface viewcontroller2()
{
AppDelegate *appdelegate;
}
@end
- (void)viewDidLoad
{
appdelegate = (AppDelegate *)[UIApplication SharedApplication].delegate;
}
Once user entered text in myTextField, using delegate:
- (void)textFieldDidEndEditing:(UITextfield *)textField
{
appdelegate.passingText = textField.text;
}
在第二个控制器上,您可以读取appdelegate的值。
这有助于解决您的要求。
答案 1 :(得分:-2)
SecondViewController.h
#import <UIKit/UIKit.h>
@protocol SecondViewControllerDelegate <NSObject>
@optional
- (void)secondViewDidEndEditingText:(UITextField *)textField;
@end
@interface SecondViewController : UIViewController
@property (nonatomic, weak) id<SecondViewControllerDelegate> delegate;
@end
SecondViewController.m
#import "SecondViewController.h"
@interface SecondViewController ()<UITextFieldDelegate>
@property (nonatomic, strong) UITextField *textField;
@end
@implementation SecondViewController
- (void)viewDidLoad {
[super viewDidLoad];
[self textField];
}
- (UITextField *)textField
{
if (!_textField) {
_textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 50, 80, 40)];
_textField.delegate = self;
[self.view addSubview:_textField];
}
return _textField;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
if ([self.delegate respondsToSelector:@selector(secondViewDidEndEditingText:)]) {
[self.delegate secondViewDidEndEditingText:textField];
}
}
@end
ViewController.m
#import "ViewController.h"
#import "SecondViewController.h"
@interface ViewController ()<SecondViewControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
SecondViewController *secondVC = [SecondViewController new];
secondVC.delegate = self;
[self presentViewController:secondVC animated:YES completion:NULL];
}
- (void)secondViewDidEndEditingText:(UITextField *)textField
{
NSLog(@"SecondViewControllerText:%@", textField.text);
}
@end