首页 文章

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

提问于
浏览
1

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

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

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

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

2 回答

  • 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文件中加载应用程序时,你需要检查它的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 class

    #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;
        }
    

    EDIT 还有一个想法是,如果你也为iphone5编码,那么你也可以用 #define isiPhone5 ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE 检查,因为我编辑了我的答案

  • 2

    1)在 appDelegate 文件中的 didFinishLaunchingWithOptions 方法中分配 PhotoViewController .

    2)设置 self.window.rootViewController = PhotoViewController;

相关问题