目标C视图未加载到物理设备上

时间:2012-02-02 22:14:04

标签: iphone objective-c ios uiview xcode4.2

我正在使用XCode 4.2为iPhone和iPad开发应用程序

我正在使用以下函数加载视图

-(IBAction)button{
    ...
    SettingsView *hello ;   
    hello= [[SettingsView alloc] initWithNibName:nil bundle:nil];
    [self presentModalViewController:hello animated:YES];
}

在模拟器上,视图加载完美。但当我在真正的iPhone上加载应用程序时,我得到一个白色的屏幕,无法回到应用程序...任何原因?

3 个答案:

答案 0 :(得分:2)

此类问题的最常见原因是案例不匹配。由于您传递了nil作为名称,因此会尝试加载SettingsView.nib。如果您的文件被称为Settingsview.nib(请注意“v”),那么这将在Mac上运行(大部分时间和模拟器),但不适用于iOS。默认情况下,Mac具有不区分大小写的文件系统。 iOS总是有一个区分大小写的文件系统。


为设备构建后,转到~/Library/Developer/Xcode/DerivedData并找到项目输出。深入到Products目录中,确保您的nib文件确实存在,并命名为您所期望的。

答案 1 :(得分:1)

如果没有.xib与之关联,则使用此代码:

SettingsView *hello= [[SettingsView alloc] initWithNibName:nil bundle:nil];
[self presentModalViewController:hello animated:YES];
[hello release];

如果有与之关联的.xib

SettingsView *hello= [[SettingsView alloc] initWithNibName:@"SettingsView" bundle:nil];
[self presentModalViewController:hello animated:YES];
[hello release];

答案 2 :(得分:0)

尝试设置视图framemodalPresentationStyle

SettingsView *hello= [[SettingsView alloc] initWithNibName:@"SettingsView" bundle:nil];

hello.view.frame = CGRectMake(<CGFloat x>, <CGFloat y>, <CGFloat width>, <CGFloat height>)
hello.modalPresentationStyle = UIModalPresentationFormSheet;

[self presentModalViewController:hello animated:YES];
[hello release];

从哪里(什么是自我?)你试图呈现一个modalviewcontroller ??