ios - 如何加载 NIB 界面作为我的应用程序的主屏幕而不是 Storyboard?

标签 ios swift xib

我有两个 Storyboard。一个用于阿拉伯语 UI,另一个用于英语 UI。

我有一个有两个按钮的开始屏幕,阿拉伯语 - 英语

根据用户的决定,我想加载适当的 UI Storyboard。

我已经创建了 StartScreen.xib,并在 Project Target -> Deployment Info 中选择它作为 Main Interface。

但是当我运行我的应用程序时,出现黑屏。

如何将 xib 文件设置为我的应用程序的主屏幕?

最佳答案

也许您应该将此代码放入您的 AppDelegate 中以显示带有 2 个按钮的第一个屏幕:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.rootViewController = [[CustomViewController alloc] initWithNibName:@"CustomViewController" bundle:nil];

    [self.window makeKeyAndVisible];
    return YES;
}

然后点击按钮加载相应的 Storyboard并用类似的东西实例化它的 initialViewController :

UIStoryboard*sb = [UIStoryboard storybardWithName:@"storyEN" bundle:nil]; 
self.view.window.rootViewController = [sb instantiateInitialViewController];

对于最终的错误,我深表歉意,我暂时没有 Mac 可以测试 :)。

无论哪种方式,您是否考虑过将 Storyboard本地化以实现此类行为?或者您的 View 布局差异太大,无法在单个 Storyboard中在两种语言之间工作?

编辑:

上面代码的快速版本:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {

    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    self.window.rootViewController = CustomViewController ( nibName:"CustomViewController", bundle: nil)

    self.window.makeKeyAndVisible()

    return true
}

第二 block :

let storyboard = UIStoryboard(name: "storyEN", bundle: nil);
let vc = storyboard.instantiateInitialViewController as UIViewController;
self.view.window.rootViewController = vc;

编辑 #2

对于您遇到的异常,该 View 似乎并未对文件所有者视而不见,这会导致您获得异常。 检查您拥有的 Interface Builder:

Interface Builder

关于ios - 如何加载 NIB 界面作为我的应用程序的主屏幕而不是 Storyboard?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26884552/

相关文章:

ios - UIButton 大小与 xib 中设置的不一样

ios - Facebook 使用图形 API 使用受众选择器发布到墙上

ios - 计算准确的 Ibeacon 距离

javascript - onclick 事件在单击按钮时提交,但在按下键盘上的 Enter 时不提交?

swift - 测试写入(到 : url) in Swift

swift - Xcode 10 存档构建编译失败

uiviewcontroller - 我可以将两个 xib 与一个 View Controller 一起使用 - 回复 : porting to iPhone 5

ios - 以图形方式自定义 Parse 登录 View

ios - 如何在 Objective-C 中进行颜色着色

用于 URL Scheme 测试的 iOS 模拟器 WebApp/书签