我有一个奇怪的问题与我的应用程序。我在运行时加载一个名为“LoginViewController”的NIB。这NIB有一堆网点,以UIView
对象放置在NIB像这样:笔尖UIView在iPad上无,而不是在iPhone上无
在运行时动态我把这些UIView的对象为在我的表视图头。在这种情况下,每个单独的UIView
(右边的UITableView
除外)都被设置为IBOutlet。每个人都有,当然不同的名称:现在
@property (strong, nonatomic) IBOutlet UIView *connectionInProgressView;
,在我的VC的viewDidLoad
方法我经历的这些独立意见全部四个运行,并确保通过写日志它们存在:
NSLog(@"connection in progress view: %@", self.connectionInProgressView);
我的问题是这样的:self.connectionInProgressView
在iPad上是零而在iPhone上是零。所有其他视图不论平台是否为零并且被实例化。我在iOS 5.0,5.1和6.1的模拟器中运行这个程序。我可以在所有iPad模拟器上重新创建问题。我的应用程序运行良好,并在iPhone上使用微调器加载视图,但在iPad上无法加载该视图,因为它是零!为什么!?
我曾尝试以下:
- 检查我的NIB的文件的所有者指向正确的观点
- 那
self.connectionInProgressView
不指向任何其他IBOutlet中 - 检查所有其他子观点与违规观点相同。他们是。删除其所有NIB连接后
- 删除
self.connectionInProgressView
并重新创建它。 - 卸下从视图和装载只是一个带
UILabel
内部视图中的活动的指标。没有运气,它不是活动指标。 - 检查VC中可能引用
self.connectionInProgressView
的任何代码。没有(除了在viewDidUnLoad
的零声明)。 - 检查财产属性上
UINavigationController
和LoginViewController
我的AppDelegate属性类型。 - 保留的
LoginViewController
在AppDelegate中的副本,虽然这似乎是浪费,并没有做出结果的差异。
[编辑2]
问:如何是VC加载
我有一个UINavigationController
那是我的AppDelegate的属性。那UINavigationController
是在applicationDidFinishLaunchingWithOptions
alloc-init'd我通过我的VC作为根视图控制器。我在此处实例化VC。
// Create login/start up views
LoginViewController *loginViewController = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];
self.loginViewNavigationController = [[UINavigationController alloc] initWithRootViewController:loginViewController];
if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
self.loginViewNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
请注意,这是工作在iPhone上,即使我将在后面UINavigationController
表现为模式窗体片在iPad上(不知道这是有利于我的问题)。
一段时间后,在AppDelegate中,当一个不同的委托类抛出一个事件时,我将以模态方式呈现这个UINavigationController。我是这样做的:
if (self.loginViewNavigationController != nil) {
[self.window.rootViewController presentViewController:self.loginViewNavigationController animated:YES completion:nil];
}
我要去疯狂试图确定为什么这一个特定视图拖动到我的笔尖和有线起来一样所有其他是零,在iPad上,而不是零iPhone上。
[编辑1] 当搜索一个重复的问题,我没能找到这样的:
A few IBOutlets pointing to nil
我并不孤单!
任何想法?
你对iPhone和iPad有单独的目标吗?如果是这样的话,那么这个笔尖呢?只有用这个笔尖才有这个问题(不适用于iPad)?还是跨越所有的笔尖? – 2013-02-20 22:19:49
不,我正在构建一个通用二进制文件。 NIB只针对一个目标。我只对这个特定的NIB有这个问题。 – Aaron 2013-02-20 22:24:11
viewDidUnload永远不会被调用。摆脱它。 – matt 2013-02-20 22:38:04