xcode我想在发布时更改第一个xib

时间:2013-05-16 07:04:15

标签: iphone objective-c xcode ipad xib

我创建了一个iPhone应用程序,然后我不得不将其转换为IPad应用程序。现在,我添加了一个新的Objective-C类,其中包括XIB,.M和.H文件。我希望在发布时显示新的XIB文件。

我新创建的文件名为PhotoViewController。如果我选择要启动的文件,模拟器会显示黑屏。如果我选择MainWindow-iPad文件,我会看到Hello_SOAPViewController文件已启动。这很奇怪。

我该如何解决这个烂摊子?我希望PhotoViewController在启动时启动。

请看下面的图片。您可以看到我的项目文件和项目设置屏幕。 enter image description here

2 个答案:

答案 0 :(得分:3)

将应用转换为通用后: -

enter image description here

您已创建具有相同自定义类的两个不同XIB。像贝娄图像: -

iphone-> xib-select fileOwner

enter image description here

现在为Ipad ite名称PhotoViewController_ipad创建新的xib。现在只需打开它新创建的XIB - >点击文件所有者--->看起来像是: -

enter image description here

它的右侧自定义类空白放置 PhotoviewCintroller

并将文件所有者连接到View

enter image description here

现在你有两个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;