我创建了一个iPhone应用程序,然后我不得不将其转换为IPad应用程序。现在,我添加了一个新的Objective-C类,其中包括XIB,.M和.H文件。我希望在发布时显示新的XIB文件。
我新创建的文件名为PhotoViewController。如果我选择要启动的文件,模拟器会显示黑屏。如果我选择MainWindow-iPad文件,我会看到Hello_SOAPViewController文件已启动。这很奇怪。
我该如何解决这个烂摊子?我希望PhotoViewController在启动时启动。
请看下面的图片。您可以看到我的项目文件和项目设置屏幕。
答案 0 :(得分:3)
将应用转换为通用后: -
您已创建具有相同自定义类的两个不同XIB
。像贝娄图像: -
iphone-> xib-select fileOwner
现在为Ipad ite名称PhotoViewController_ipad创建新的xib。现在只需打开它新创建的XIB - >点击文件所有者--->看起来像是: -
它的右侧自定义类空白放置 PhotoviewCintroller
并将文件所有者连接到View
现在你有两个Xib与Iphone相同的Class One和其他Ipad现在你可以通过使用类似下面的编码来实现这个: -
在Delegate.m文件中加载app时,你需要检查它的Iphone或Ipad: -
#define isiPhone (UI_USER_INTERFACE_IDIOM() == 0)?TRUE:FALSE
yourApplicationAppDelegate.h class
#import <UIKit/UIKit.h>
@class PhotoViewController;
@interface yourApplicationAppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) PhotoViewController *viewController;
@end
yourApplicationAppDelegate.m类
#import "yourApplicationAppDelegate.h"
#import "PhotoViewController.h"
#define isiPhone (UI_USER_INTERFACE_IDIOM() == 0)?TRUE:FALSE
#define isiPhone5 ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE
@implementation yourApplicationAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
if (isiPhone) {
if (isiPhone5)
{
self.viewController = [[PhotoViewController alloc] initWithNibName:@"PhotoViewController_iphone5" bundle:nil];
}
else
{
self.viewController = [[PhotoViewController alloc] initWithNibName:@"PhotoViewController_iphone" bundle:nil];
}
}else{
self.viewController = [[PhotoViewController alloc] initWithNibName:@"PhotoViewController_ipad" bundle:nil];
}
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
修改强>
还有一个想法是,如果你也为iphone5编码,那么你也可以检查
#define isiPhone5 ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE
我编辑了我的答案
答案 1 :(得分:2)
1)在PhotoViewController
文件中的didFinishLaunchingWithOptions
方法中分配appDelegate
。
2)设置self.window.rootViewController = PhotoViewController;