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