[英]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.