1

IPhone アプリを作成した後、それを iPad アプリに変換する必要がありました。ここで、XIB、.M、および .H ファイルを含む新しい Objective-C クラスを追加しました。そして、その新しいXIBファイルを起動時に表示したい.

新しく作成したファイルの名前は PhotoViewController です。そのファイルを起動するように選択すると、エミュレーターに黒い画面が表示されます。MainWindow-iPad ファイルを選択すると、Hello_SOAPViewController ファイルが起動されます。とても奇妙です。

この混乱をどのように修正できますか?起動時に PhotoViewController を開始したい。

下の画像をご覧ください。私のプロジェクト ファイルとプロジェクトのセットアップ画面が表示されます。 ここに画像の説明を入力

4

2 に答える 2

3

アプリをユニバーサルに変換した後:-

ここに画像の説明を入力

XIB同じカスタム クラスで2 つの異なるを作成しました。怒鳴る画像のように:-

iphone->xib-select fileOwner

ここに画像の説明を入力

ここで、PhotoViewController_ipad という名前の Ipad 用の新しい xib を作成します。新しく作成された XIB を開くだけです-> [ファイルの所有者] をクリックします---> 次のように表示されます:-

ここに画像の説明を入力

その右側の n 側 カスタム クラスの空白をそこに置くPhotoviewCintroller

ファイル所有者をビューに接続します

ここに画像の説明を入力

これで、Iphone 用に 1 つ、Ipad 用に 1 つという同じクラスの 2 つの Xib ができました。次のようなコーディングを使用してこれを実現できます。

アプリが Delegate.m ファイルに読み込まれている間に、iPhone または Ipad を確認する必要があります。

#define isiPhone (UI_USER_INTERFACE_IDIOM() == 0)?TRUE:FALSE

yourApplicationAppDelegate.h クラス

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

編集 もう1つ考えられるのは、iphone5のコードも作成している場合は #define isiPhone5 ([[UIScreen mainScreen] bounds].size.height == 568)?TRUE:FALSE、回答を編集したときに確認することもできるということです

于 2013-05-16T07:09:10.973 に答える