如何声明Nib文件?

时间:2011-04-04 10:47:08

标签: iphone

如何使用initwithnib语法声明nib文件它显示'Warning: passing argument 1 of initwithNibName:bundle: from Incompatible pointer type'

我的陈述是:

SpanishViewController *spanishview = [[SpanishViewController alloc] 
    initWithNibName:"LocalizeMeViewController.xib (es)" 
             bundle:[NSBundle mainBundle]];

先谢谢........

3 个答案:

答案 0 :(得分:1)

除非你真的知道你在使用自定义NIB文件名做什么,否则你应该像这样加载NIB:

self.myViewController = [[[MyViewController alloc] initWithNibName:nil bundle:nil] autorelease];

或:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:nil bundle:nil];

Apple未来会在未经宣布的情况下添加一些新功能,这取决于“我不在乎,请自动选择NIB”功能。

PS:“不兼容的指针类型”意味着你试图传递一个错误的“类型”的变量。你可能写道:

[... initWithNibName:"name" bundle:nil]

...即忘记了“@”符号。这将它转换为与预期不同的类型/指针类型(特定类型的字符串指针)。


编辑:既然您已经添加了实际代码,我怀疑您正在以错误的方式进行本地化。检查Apple文档,但在我的脑海中,您提供了具有相同名称的相同NIB的多个副本,但存储在不同的子目录中,每种语言一个。

答案 1 :(得分:0)

您可能没有输入xib的确切名称。我不建议在括号上添加括号。正如亚当所说,你需要在它之前放一个'@',因为它仍然是一个NSString,它作为一个参数。所以名称应该是NSString。 @ “myNibName”

答案 2 :(得分:0)

只是做:

SpanishViewController *spanishview = [[SpanishViewController alloc] 
initWithNibName:@"LocalizeMeViewController" 
         bundle:nil];