Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
始终带有两个NIB的newViewController(iPhone和iPad)_Iphone_Ios_Objective C_Xcode_Ipad - Fatal编程技术网

始终带有两个NIB的newViewController(iPhone和iPad)

始终带有两个NIB的newViewController(iPhone和iPad),iphone,ios,objective-c,xcode,ipad,Iphone,Ios,Objective C,Xcode,Ipad,为universal apps XIB定制xcode,这样当我创建一个新的ViewController(如VideoVC)时,它必须为该类创建两个nib文件 VideoVC_iPhone VideoVC_iPad 谁能帮我一下吗。没有准则。只是台阶。谢谢当您创建新的Xcode项目时,选择单视图应用程序,在“选项”页面上的“设备”下拉列表中,选择“通用”。这将创建iPhone和iPad的笔尖 从头到尾: 文件->新项目 选择单视图应用程序->下一步 设备->通用您可以创建自定义视图控制器模板来

为universal apps XIB定制xcode,这样当我创建一个新的ViewController(如VideoVC)时,它必须为该类创建两个nib文件

  • VideoVC_iPhone

  • VideoVC_iPad


谁能帮我一下吗。没有准则。只是台阶。谢谢

当您创建新的Xcode项目时,选择单视图应用程序,在“选项”页面上的“设备”下拉列表中,选择“通用”。这将创建iPhone和iPad的笔尖

从头到尾:

文件->新项目

选择单视图应用程序->下一步


设备->通用

您可以创建自定义视图控制器模板来执行此操作。创建一个新的文件模板比创建一个新的项目模板更容易,所以完全可以这样做


我不久前做了一个演讲——可能有用

创建具有以下命名约定的viewcontroller,可以将iphone/ipad xib创建为
“viewcontrollername~iphone.xib”
@“viewcontrollername~ipad.xib”

下面的链接说明相同,提供了在viewcontroller.h和viewcontroller.m中区分ipad和iphone的方法


您将在“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode”中看到templates文件夹 在这里,您将看到文件和项目模板,如果需要,可以编辑或创建新模板

针对您的问题,导航到此文件夹“/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/File Templates”

在这里,您可以通过在view controller with nib的模板中添加一个用于iPad的空白nib来实现您想要做的事情。我上传了一个我做的样本,它仍然是一个正在进行的工作,但它将创建2个笔尖,因为你需要

[my custom template]
http://www.saplogix.net/Xcode_Custom_Template/TwoNibTemplate.zip
extract and copy that inside this folder "~/Library/Developer/Xcode/Templates/File Templates"

Note: create the directory if it's not already there.
Todo:添加代码以加载基于设备的特定nib,只需添加代码即可。此外,它将仅作为超级类适用于UIViewController

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
    {
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    }
    else
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad)
        {
            NSString *_nibBundleOrNil = (NSString *)(nibBundleOrNil != nil ? [nibNameOrNil stringByAppendingString:@"_iPad"] : [NSStringFromClass([self class]) stringByAppendingString:@"_iPad"]);
            self = [super initWithNibName:_nibBundleOrNil bundle:nibBundleOrNil];
        }
    
    if (self)
    {
        // Custom initialization
    }
    return self;
}
我的模板将生成以下条目,您可以使用它创建具有2个NIB的控制器。

它只是第一次创建。如何创建第二次或更多你能给我发送幻灯片链接吗?我已经在答案中添加了链接。我正在为此创建一个开源谷歌项目,并将上传我已经完成的工作以及我将要完成的工作,如果你有任何其他模板,请务必让我知道。不要将文件添加到Xcode文件夹-升级Xcode时,您将丢失更改。自定义模板的正确位置是
~/Library/Developer/Xcode/templates/
。如果它不存在,您需要创建它。@Abizern感谢您指出这一点,我已经更新了答案中的路径。@SAPLogix此选项在Xcode 4.6或更高版本中不可用。怎么做?但这并不是为了创建模板,一个用于iphone,另一个用于ipad