删除 Storyboard 以使用 XIB 文件

Posted

技术标签:

【中文标题】删除 Storyboard 以使用 XIB 文件【英文标题】:Removing Storyboard to use XIB files 【发布时间】:2015-01-23 20:02:47 【问题描述】:

我完全是 ios 开发新手,需要一些帮助。

对于我被要求编写的应用程序,我被要求仅使用 XIB 文件而不是故事板进行编码。这是为了帮助更好地理解和遵循我参与的另一个项目的编码约定。

所以,我遵循了这个网站/youtube/google 上的各种建议,并一直遇到同样的问题。

这是我采取的步骤。

删除 Storyboard 和默认视图控制器文件 删除 info.plist 中的关系 新建了一个类,过程中创建了XIB文件 将主界面设置为新的XIB文件(在常规设置中) 将 viewController 属性添加到 AppDeligate.h

将以下代码添加到 AppDeligate.m

- (BOOL)application:(UIApplication *)application     didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
// Override point for customization after application launch.
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[MainViewController alloc]      initWithNibName:@"PhotoViewController_ipad" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;

我一直遇到的问题是,在模拟器中运行时,它在启动时崩溃,我收到从“主”文件中的一行反馈的错误。错误是“线程 1 SIGART”。

经过研究,我发现这可能与 XIB 文件和类文件之间的关系有关。因为这是为我创建的,所以它是正确的,尽管我已经确定它与班级有关。并且XIB的文件所有者与视图相关

抱歉,描述太长了。长话短说。我只想开始,在没有故事板的情况下创建我的应用程序,只使用 XIB 文件

谢谢

【问题讨论】:

您是否尝试过使用异常断点来查看导致崩溃的原因? 似乎来自 main 中唯一的代码行? 【参考方案1】:

我不得不这样做几次。您需要确保将 AppDelegate 添加到用于替换情节提要的 MainWindow.xib 文件中。确保您的所有代表和窗口都正确连接,以便在启动时拥有合适的插座。

MainWindow.xib

已添加 AppDelegate(连接到 Window 和 Delegate) 已添加窗口(并连接到 AppDel 中的窗口) 文件所有者(连接到委托)

Info.plist

主 nib 文件基本名称(设置为 MainWindow.xib)

我基本上采用了一个较旧的项目并确保连接正确并且我的 MainWindow 看起来正确。如果您尚未将 UIWindow 添加到 AppDelegate,您也需要这样做。

如果您有有关崩溃的信息,我们可能会为您提供进一步的帮助。

【讨论】:

这很有帮助,对不起,如果这听起来很傻,但是我该如何将 AppDeligate 添加到 XIB 文件中? 您可以从组件列表中拖放。与添加 UILabel 类似,只是在列表的下方。它应该会自动正确添加它,您只需要连接 IB 中的网点。 我知道这是前段时间,但我正在按照这些步骤操作并将 App Delegate 添加到文档大纲中,但是如何添加窗口和委托出口?

以上是关于删除 Storyboard 以使用 XIB 文件的主要内容,如果未能解决你的问题,请参考以下文章

在同一个项目中使用 xib 和 storyboard

Xamarin iOS:不打开.xib和.storyboard文件Visual Studio 2017

iOS开发中xib和Storyboard中需要注意的事项

在 Nativescript iOS 应用上使用 XIB 和 Storyboard

代码视图与StoryBoard.Xib文件视图的跳转

将 Storyboard 和 xib 用于同一个视图控制器?