回答
这可能是你的笔尖混乱了,但我发现一个常见的原因是有两个实例,你认为你只有一个实例,而你在代码中使用的实例不是你连接的实例。
如果您还定义了创建视图的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. Tableview更新'NSInternalInconsistencyException',原因:'无效的更新:无效的行数?
- 4. SAML SSO失败 - “原因:目标无效。”
- 5. Google Cloud DNS Bad Request原因无效
- 6. 消息[无效值]位置[ - ]原因[无效]域[global]
- 7. 由于IBOutlet的原因,iOS应用程序在didFinishLaunchingWithOptions中崩溃
- 8. XMLReader显示无效的XML,如何得到无效的XML的原因?
- 9. 无法部署到Google App Engine - 请求无效,原因不明
- 10. 可能的原因为“StreamCorruptedException:无效的流头”
- 11. 产生的原因:com.microsoft.sqlserver.jdbc.SQLServerException:无效的对象名称springboot.USERS“
- 12. “无效的对象名称:dbo.etc”错误的根本原因?
- 13. 任何为无效的函数声明constexpr的原因?
- 14. 如何通过symfony 1.4获得无效表单的原因?
- 15. “EOSError 1400 - 窗口句柄无效”的可能原因
- 16. Gradle同步失败:原因:无效的CEN头(坏签名)
- 17. 如何查看表单无效的原因
- 18. QProcess因无明显原因而死亡
- 19. PHP会因某些原因无法
- 20. pdf4net无法看到原因
- 21. TinyMCE和Viewstate验证失败。原因:Viewstate无效
- 22. 'NSInternalInconsistencyException',原因:'NIB数据无效'。对于CustomCell
- 23. 根本原因:递归调用自动化对等API无效
- 24. 无效的JSON原始:
- 25. 无效的JSON原始:
- 26. “[]”是无效的JSON原语?
- 27. 无法连接IBOutlet
- 28. Cuda因子值无效
- 29. 无法执行服务的原因
- 30. 无法验证数据的原因
“两个实例”场景的一个常见原因是在代码中创建控制器实例,并在加载笔尖时使其成为笔尖的所有者。然后,在IB中创建另一个控制器实例并连接到该网点,而不是“文件所有者”。 – 2011-06-03 12:23:20
或者,在另一个笔尖中创建一个实例,然后将其中一个实例挂钩,并发现该插口在另一个笔记本中为“nil”。另一种可能性是,您只创建了一次对象,但尚未加载它将是所有者的笔尖。 – 2011-06-04 01:45:35