回答
這可能是你的筆尖混亂了,但我發現一個常見的原因是有兩個實例,你認爲你只有一個實例,而你在代碼中使用的實例不是你連接的實例。
如果您還定義了創建視圖的loadView
方法,可以根據初始化方法進行。如果使用alloc-init
對它初始化,並且nib名稱與類名稱不同,那麼可以有一個情況,即插座爲零。但查克的回答似乎更合理的假設。
一種可能性: 假設IBOutlet中的容器是一個像一個功能一個單獨的對象:
+ (singletonObject*) sharedInstance {
if(!gGlobalSingletonPointer) {
gGlobalSingletonPointer = [[singletonObject alloc] init];
}
return gGlobalSingletonPointer;
}
你「按需」創建單獨的對象,如果它不存在。 您可以在該函數中爲其創建一個全局指針。
如果您還在InterfaceBuilder中實例化了這樣一個對象,並連接其插座,則將創建該對象而不調用 sharedInstance。如果您隨後調用sharedInstance,則會創建一個新的對象(sans IBOutlet連接)。
解決的辦法是更新singletonObject的init或awakeFromNib函數中的全局指針。
您使用的是UINavigationController嗎?
如果是這樣,請在IB中打開MainWindow.xib,並確保在屬性檢查器中正確設置了根控制器的nib名稱。
爲什麼不能正確設置?一個原因是'重命名'重構不會更新這個,然後內部將不會找到用於連接您的用戶界面的筆尖。或者你自己重新命名了筆尖,並沒有更新這個字段。
我剛剛被刺住的一個原因是:如果nib文件由於某種原因未被包含在目標資源文件中(例如,當您將目標添加到項目時沒有選中目標),Xcode不會引發錯誤但是這個筆尖的所有插口都將是空的...
你是否在與File's Owner做一些不尋常的事情?如果您不在situations where the nib is loaded automatically(由應用程序加載的主要筆尖或由視圖控制器,文檔或窗口控制器加載的筆尖)之一,則您必須load the nib programmatically。
- 1. 產生的原因:java.lang.NumberFormatException:無效的雙:「」
- 2. 無效的JSON - 看不到原因
- 3. 原因:org.eclipse.swt.SWTException:無效的線程訪問
- 4. Tableview更新'NSInternalInconsistencyException',原因:'無效的更新:無效的行數?
- 5. 捆綁無效負載原因:0x80070570
- 6. Google Cloud DNS Bad Request原因無效
- 7. SAML SSO失敗 - 「原因:目標無效。」
- 8. 消息[無效值]位置[ - ]原因[無效]域[global]
- 9. 由於IBOutlet的原因,iOS應用程序在didFinishLaunchingWithOptions中崩潰
- 10. 我無法理解ORA-01722背後的原因:無效號碼
- 11. XMLReader顯示無效的XML,如何得到無效的XML的原因?
- 12. 無法部署到Google App Engine - 請求無效,原因不明
- 13. 「無效的正則表達式...原因中的R
- 14. 「com.microsoft.sqlserver.jdbc.SQLServerException:無效的對象名稱」的所有可能原因
- 15. 產生的原因:com.microsoft.sqlserver.jdbc.SQLServerException:無效的對象名稱springboot.USERS「
- 16. 「movq」的後綴或操作數無效的原因是什麼?
- 17. 任何爲無效的函數聲明constexpr的原因?
- 18. 可能的原因爲「StreamCorruptedException:無效的流頭」
- 19. 產生的原因:javax.websocket.DeploymentException:路徑[的WebSocket]無效
- 20. 「無效的對象名稱:dbo.etc」錯誤的根本原因?
- 21. AWS SDK-的NodeJS - 無效參數:PlatformApplicationArn原因:錯誤號的ARN
- 22. JQuery驗證MVC4如何找出mvc表單無效的原因
- 23. 如何查看錶單無效的原因
- 24. 'NSInvalidArgumentException',原因:'無效的類型在JSON寫(_SwiftValue)'與alamofire swift3
- 25. time.sleep()函數顯然是導致語法無效的原因
- 26. Twitter API - 「無效或過期令牌」的原因
- 27. Gradle同步失敗:原因:無效的CEN頭(壞簽名)
- 28. glFramebufferTexture2D返回無效狀態與EAGLContext的其他原因?
- 29. 「EOSError 1400 - 窗口句柄無效」的可能原因
- 30. 如何通過symfony 1.4獲得無效表單的原因?
「兩個實例」場景的一個常見原因是在代碼中創建控制器實例,並在加載筆尖時使其成爲筆尖的所有者。然後,在IB中創建另一個控制器實例並連接到該網點,而不是「文件所有者」。 – 2011-06-03 12:23:20
或者,在另一個筆尖中創建一個實例,然後將其中一個實例掛鉤,並發現該插口在另一個筆記本中爲「nil」。另一種可能性是,您只創建了一次對象,但尚未加載它將是所有者的筆尖。 – 2011-06-04 01:45:35