繁体   English   中英

UITextField出口在运行时为null

[英]UITextField outlets null at runtime

我在基于情节提要的XCode项目中遇到一个奇怪的问题,其中视图中的UITextFields出口在运行时为空(即,调试时其在Locals窗口中的指针值显示为“ 0x00000000”)。 UIViewController上的委托方法很好,并且“ sender”参数是有效对象,但是“ self”中同一字段的属性是空指针。 以下是我在调试器中插入的委托代码的示例。

(BOOL) textFieldShouldReturn:(UITextField *) sender {
    // sender is '0x7812...', but self.txtUserName is '0x0000...'
    if(sender == self.txtUserName)
    ....

我开始怀疑我一定做错了什么,但是我启动了另一个基于情节提要的项目,添加了一个文本字段,将其全部连接起来……然后它起作用了。 回到我的项目,添加一个文本字段,将其全部连接起来……仍然是“ 0x00000000”。

关于什么可能导致这种事情发生的任何想法?

编辑:看来这发生在我添加的任何新视图对象上; 我只是尝试添加第二个UIButton,它也有同样的问题。 我添加的第一个按钮就可以了。 因此,在某些时候,添加/链接视图对象时事情开始破裂。

第二编辑:我刚开始创建一个新项目并将文件添加到其中。 到现在为止还挺好。

这可能是一个很晚的答案……但是无论出于什么原因,我都发生了同样的事情……(我正在使用xcode 5)。 玩了一些之后,我注意到调试器在其中将表示_UITextFielVariable 0x00000000的位置始终是头文件中的第一个 UITextField变量。

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *vehicleType;
@property (strong, nonatomic) IBOutlet UITextField *trackType;
@property (strong, nonatomic) IBOutlet UITextField *massBase;

在这里,“ vehicleType”将始终存在该问题,但是,我所做的只是添加了一个虚拟变量,该变量未链接到任何像这样的东西(例如标签,文本,按钮等)

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UITextField *extra;
@property (strong, nonatomic) IBOutlet UITextField *vehicleType;
@property (strong, nonatomic) IBOutlet UITextField *trackType;
@property (strong, nonatomic) IBOutlet UITextField *massBase;

然后运行代码就可以了...我真的不知道为什么,如果有人可以告诉我,那太好了。

我也在回答这个问题,以防其他人正在寻找这个答案并且跌倒了:)

经过一些重新设计后,我用一个Storyboard-id推一个视图控制器时遇到了这个问题。

我做了一个简单的屏幕,分配了一个Storyboard-id,编写了一些代码等。

然后,我重新设计了屏幕,重新编写了代码,最初使用segues,但最终使用Storyboard-id以编程方式推送了vc。 因为情节提要ID与重构的类相对应,但是在其他屏幕上,调用了正确的代码,但是没有初始化任何出口

因此,如果要使用情节提要ID加载屏幕,请再次检查该值是否与您期望的屏幕相对应。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM