我一直在转换一个使用xib文件的简单程序以编程方式完成。我已逐个删除元素并将它们放回代码中。
我最终可以删除整个文件吗?还是用于重要的事情?
似乎有三个。
PhoneContent.xib MyView.xib 的MainWindow.xib
答案 0 :(得分:3)
您不需要MyView.xib或PhoneContent.xib,因此如果您在代码中重新创建布局,则可以删除它们。
要删除MainWindow.xib,您需要更新应用程序:didFinishLaunchingWithOptions方法以编程方式设置窗口和主视图控制器,但比您需要修改main.m中的main函数更巧妙
而不是这样:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
你需要它看起来像这样:
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, NSStringFromClass([YourAppDelegate class]));
[pool release];
return retVal;
}
您还必须从info.plist文件中删除对MainWindow(主nib文件基本名称)的引用。
好。所以现在我告诉你如何删除你的nib文件,你介意我问为什么你这样做?在代码中生成布局是疯狂的!这就像尝试在JavaScript中生成HTML,或者通过在文本文件中将颜色指定为十六进制数来生成图片。
你正在使用一个易于在视觉上进行调整的界面,而不需要在每次移动几个像素时编译和运行,并使其更难维护。
您正在使用保证无错误的布局代码,因为它是自动生成的,并用大量内存泄漏或概念错误的手写代码替换它。
你对nib文件有什么看法?
答案 1 :(得分:3)
是的,您可以删除所有.xib文件。如果您删除MainWindow.xib,请记得在UIApplicationDelegate
的{{1}} {/ p>中启动您的窗口
didFinishLaunchingWithOptions:
然后设置根视图控制器
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
也正如尼克·洛克伍德所提到的 - 检查main.m以查看self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
类是否已设置(默认情况下由Xcode4.2及更高版本完成)
UIApplicationDelegate
最后,从int main(int argc, char *argv[])
{
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
文件中删除Main nib file base name
属性。
答案 2 :(得分:3)
您还需要从App_info.plist
中删除主XIb值