UITextField出口在运行时为null

时间:2013-09-20 14:26:23

标签: iphone ios objective-c xcode uitextfield

我在基于故事板的XCode项目中遇到一个奇怪的问题,我的视图中的UITextFields出口在运行时为空(即当调试显示为“0x00000000”时,它们在Locals窗口中的指针值)。 UIViewController上的委托方法称为精细,'sender'参数是有效对象,但“self”中相同字段的属性是空指针。以下是我在调试器中遇到的委托代码示例。

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

我开始怀疑我一定是做错了什么但是我开始了另一个基于故事板的项目,添加了一个文本字段,把它全部搞定了......它起作用了。回到我的项目,添加了一个文本字段,将它全部挂起......仍然是'0x00000000'。

关于可能导致此类事情发生的任何想法?

编辑:我添加的任何新视图对象都会出现这种情况;我刚刚尝试添加第二个UIButton,它有同样的问题;我添加的第一个按钮就好了。因此,在添加/链接视图对象时,某些事情已经开始破坏。

第二次编辑:我刚开始一个新项目并将文件添加到其中。到目前为止一切都很好。

2 个答案:

答案 0 :(得分:0)

这可能是一个非常晚的答案......但是无论出于什么原因,我都会发生同样的事情......(我正在使用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;

并运行代码工作......我真的不知道为什么,如果有人能让我知道这将是伟大的。

我也在回答这个问题,以防其他人正在寻找这个答案而且还有这个问题:)

答案 1 :(得分:0)

我在重新设计之后用一个带有storyboard-id的视图控制器时遇到了这个问题..

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

然后我重新设计了屏幕,重新编写了代码,最初使用segues但最终以编程方式使用storyboard-id推送vc。由于故事板ID对应于重构的类,但是其他一些屏幕,正确的代码被调用但没有一个出口被初始化

因此,如果您使用storyboard-id加载屏幕,请仔细检查该值是否与您期望的屏幕相对应。