簡體   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