xcode 4.6.3 中的 MainWindow-iPad.xib [关闭]

Posted

技术标签:

【中文标题】xcode 4.6.3 中的 MainWindow-iPad.xib [关闭]【英文标题】:MainWindow-iPad.xib in xcode 4.6.3 [closed] 【发布时间】:2013-08-16 13:46:19 【问题描述】:

现在我正在阅读 Head First iPhone and iPad Development 2nd edition (Dan Pilone, Tracey Pilone) 一书。而当,根据书中的练习,我需要将书中的程序从iphone更改为universal时,xcode正在自动制作MainWindow-iPad.xib,但我的xcode没有。书中的一开始程序也有文件 MainWindow.xib,但我没有。我现在该怎么办?如果我要更改 MasterViewController.xib(导航模板),更改也将在 iPhone 模拟器版本中。

【问题讨论】:

【参考方案1】:

根据您的评论重新表述您的问题:

如果smb要做一个通用程序,而ipad和iPhone上的xibs需要不同,怎么办?

您在 appDelegate 中执行此操作:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
        self.viewController = [[HWViewController alloc] initWithNibName:@"HWViewController_iPhone" bundle:nil];
     else 
        self.viewController = [[HWViewController alloc] initWithNibName:@"HWViewController_iPad" bundle:nil];
    
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;

该代码直接取自 XCode 中的单一视图模板 - 但无论有无模板,该代码均有效。

假设您有两个单独的 xib 文件,一个名为“HWViewController_iPhone.xib”,另一个名为“HWViewController_iPad.xib”。只要名称与代码中的initWithNibName: 字符串一致(您在代码中省略了“.xib”),名称就无关紧要了。

您可以在 XCode 中使用 New > File > User Interface > View 制作 xib 文件

【讨论】:

现在我在 Appdelegate.m 中有这段代码【参考方案2】:

您的书已过期。您可以通过添加 xib 并将其设置为目标摘要中部署信息中的主界面来执行该路由。

真的,虽然没有什么理由这样做。更好的方法是创建一个根视图控制器并在您的应用委托中进行设置。

RootViewController *rootViewController = [[RootViewController alloc] init];
self.window.rootViewController = rootViewController;
[self.window makeKeyAndVisible];

【讨论】:

【参考方案3】:

现在我在 Appdelegate.m 中有这段代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
        self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPhone" bundle:nil];
     else 
        self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPad" bundle:nil];
    
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
    MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
    self.navigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
    self.window.rootViewController = self.navigationController;
    [self.window makeKeyAndVisible];
    return YES;

还有 3 个错误:在“AppDelegate *”类型的对象上找不到属性“viewController” 在这个字符串之后:

self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPhone" bundle:nil];
self.viewController = [[UIViewController alloc] initWithNibName:@"HWViewController_iPad" bundle:nil];
self.window.rootViewController = self.viewController;

【讨论】:

以上是关于xcode 4.6.3 中的 MainWindow-iPad.xib [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 4.2 模板更改 - UIApplication & MainWindow.xib

Xcode 4.2.1 ios 空项目中没有 MainWindow.xib

Xcode 为我的项目意外退出(不在 Xcode 4.6.3 中)

xCode 4.6.3 蜡框架

如何将 Xcode 5.0.1 项目降级到 Xcode 4.6.3

无法从此设备 XCode 4.6.3 复制符号