当我尝试访问另一个视图控制器中的数据时,为什么它为null? (Objective-C,XCode)

时间:2015-11-12 00:30:27

标签: ios objective-c

我试图在我的第一个视图控制器中使用UITextField的.text,在我的第二个视图控制器中使用UITextField的另一个.text,但是我的firstPage.firstTField.text在我的第二个视图控制器中甚至是(null)虽然我在我的第一个视图控制器中打印了_firstTField.text,但它打印出输入的输入。

可能是什么问题?为什么是null?

FirstViewController.h

@property (weak, nonatomic) IBOutlet UITextField *firstTField;

SecondViewController.h

@property (weak, nonatomic) IBOutlet UITextField *secondTField;

SecondViewController.m

#import "FirstViewController.h"

- (void)viewDidLoad {
     [super viewDidLoad];
     FirstViewController *firstPage = [[FirstViewController alloc] init];
     _secondTField.text = firstPage.firstTField.text;
}

1 个答案:

答案 0 :(得分:0)

您应该将视图控制器的视图视为私有。这是视图控制器外观的一部分,而不是它的功能,如果视图控制器外部的对象期望视图以某种方式显示,那么当您更改视图控制器视图的外观时,它会破坏其他代码。坏。

在这种情况下情况更糟。它只是不起作用,因为@nhgrif解释道。您刚刚创建了一个新的FirstViewController对象,它的视图甚至还不存在。 (在系统被要求将视图控制器显示到屏幕之前,不会创建视图控制器视图。)

您应该在视图控制器中创建一个属性,公开您需要读/写的字符串,然后使用它。

然而,您会创建一个视图控制器的新实例,然后立即尝试从其中一个字段中读取文本,这很奇怪。如果之前在线上创建了视图控制器,它怎么可能有有用的数据呢?你期待发生什么?