我有两个故事板。一个用于阿拉伯语用户界面,另一个用于英语界面。

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

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

我已经创建了StartScreen.xib,并在Project Target-> Deployment Info中将其选择为主界面。

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

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

最佳答案

也许您应该将此代码放在AppDelegate中,以使用2个按钮显示第一个屏幕:

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

    [self.window makeKeyAndVisible];
    return YES;
}

然后点击按钮,加载相应的故事板,并使用类似以下内容来初始化其initialViewController:
UIStoryboard*sb = [UIStoryboard storybardWithName:@"storyEN" bundle:nil];
self.view.window.rootViewController = [sb instantiateInitialViewController];

很抱歉出现最终错误,我暂时没有Mac可以测试:)。

无论哪种方式,您是否考虑过将故事板本地化以实现这种行为?还是您的视图布局太不同而无法在单个情节提要中在两种语言之间使用?

编辑:

上面的代码的快速版本:
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
}

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

编辑#2

对于您所遇到的异常,似乎视图并没有被文件所有者所蒙蔽,这会导致您得到异常。
在Interface Builder中检查您是否具有:

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

10-13 05:09