[英]Why is it null when I try to access data in another view controller? (Objective-C, XCode)
[英]Why is my variable null when I am attempting to access it from another view controller (Objective-c?
我正在尝试在第二个视图控制器的另一个UITextField的.text中使用我的第一个视图控制器的UITextField的.text,但是我的第一个视图控制器firstTField.text在我的第二个视图控制器中却变成了(null),即使我在我的第一个视图控制器中打印了_firstTField.text,并打印出了输入的内容。
可能是什么问题? 为什么为空? 有人可以指导我如何解决/解决这个问题吗?
@property (weak, nonatomic) IBOutlet UITextField *firstTField;
@property (weak, nonatomic) IBOutlet UITextField *secondTField;
#import "FirstViewController.h"
- (void)viewDidLoad {
[super viewDidLoad];
FirstViewController *firstPage = [[FirstViewController alloc] init];
_secondTField.text = firstPage.firstTField.text;
}
我会认为FirstViewController
塞格斯到SecondViewController
。 您的代码发生了两件事,这将阻止secondTField
设置其文本:
1)您正在实例化FirstViewController
的新实例,而不是引用您从中FirstViewController
实例。 此新的FirstViewController
将不在视图层次结构中,因此不会设置其文本字段。
2)您将需要在搜索过程中使用NSString
在将信息加载到视图层次结构时将其暂时保存在SecondViewController
。
您的代码将如下所示:
FirstViewController.h
@property (weak, nonatomic) IBOutlet UITextField *firstTField;
SecondViewController.h
@property (weak, nonatomic) IBOutlet UITextField *secondTField;
@property (strong, nonatomic) NSString *secondTFieldText; // temporary to hold the text from FirstViewController
FirstViewController.m
#import "SecondViewController.h"
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
SecondViewController *secondViewController = (SecondViewController *)segue.destinationViewController;
secondViewController.secondTFieldText = self.firstTField.text;
}
SecondViewController.m
#import "FirstViewController.h"
- (void)viewDidLoad
{
[super viewDidLoad];
self.secondTField.text = self.secondTFieldText;
}
希望对您有所帮助
在加载视图控制器的视图并将其呈现给用户时,将分配标记为IBOutlets的属性。
因此它为null,直到您以某种方式显示视图控制器为止。
在此代码中,您尚未将firstPage的视图添加到任何位置,因此它返回null。
- (void)viewDidLoad {
[super viewDidLoad];
FirstViewController *firstPage = [[FirstViewController alloc] init];
_secondTField.text = firstPage.firstTField.text;
}
您的firstViewController的IBOutlets尚未初始化。 创建一个字符串属性。 设置那个。 然后在firstViewController的viewDidLoad中设置textField的text属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.