【问题标题】:Show ViewController on different Storyboards在不同的故事板上显示 ViewController
【发布时间】:2014-11-11 05:05:09
【问题描述】:

我有 3 个故事板,适用于 3 种不同的设备屏幕尺寸。当按下 3 个故事板的按钮时,我想从主 ViewController 移动到第二个 ViewController。代码如下:

在 AppDelegate.m 中

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
     if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
    UIStoryboard *storyBoard;

    CGSize result = [[UIScreen mainScreen] bounds].size;
    CGFloat scale = [UIScreen mainScreen].scale;
    result = CGSizeMake(result.width * scale, result.height * scale);

    if(result.height == 1136){
        storyBoard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
        UIViewController *initViewController = [storyBoard instantiateInitialViewController];
        [self.window setRootViewController:initViewController];
    }
    else {
        storyBoard = [UIStoryboard storyboardWithName:@"Main_iPhone4" bundle:nil];
        UIViewController *initViewController = [storyBoard instantiateInitialViewController];
        [self.window setRootViewController:initViewController];
    }
  }

  return YES;
}

移动到第二个 ViewController 的代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone/Main_iPhone4/Main_iPad" bundle: nil];
ArcadeView *svc = [storyboard instantiateViewControllerWithIdentifier:@"arcade"];
self.window.rootViewController = svc;

但是,当我使用上面的代码时。 XCode 告诉我

“找不到名为 NSBundle 中的“Main_iPhone/Main_iPhone4/Main_iPad”。

我该如何解决这个问题?

【问题讨论】:

  • 你为什么要创建 3 个故事板?你可以使用自动布局。检查这个raywenderlich.com/50317/…
  • 错误本身清楚地说明了问题。
  • 你有名为“Main_iPhone/Main_iPhone4/Main_iPad”的故事板吗?
  • @Kalpesh 我也在为 pre iOS7 做
  • @HuyNghia 是的,我有这些名字的故事板

标签: ios objective-c uiviewcontroller uistoryboard


【解决方案1】:

因为您没有名为 @"Main_iPhone/Main_iPhone4/Main_iPad" 的情节提要。

要使其按您想要的方式工作,请在每个情节提要中做得更好,进行相同的过渡并使用相同的标识符对其进行签名。 对于过渡,请使用:

[self performSegueWithIdentifier:@"ShowMainMenu" sender:self]

但总的来说,我建议您了解有关约束的更多信息。这样会容易很多

【讨论】:

  • 如果我分别使用 Main_iPhone、Main_iPhone4 和 Main_iPad,它可以工作吗?例如: UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone4" bundle: nil]; UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPad" bundle: nil];
  • 但是在你这样做之前你应该思考 100 次。事实上,99.999% 的问题都可以通过故事板轻松解决。所以要么你有一个非常具体的任务,要么你没有正确使用可用的工具。
  • 你有没有更好的方法将不同的故事板组合在一行中?
  • 不不,我的意思是在一个故事板中调整界面大小。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-16
  • 2016-10-23
  • 2017-08-07
  • 1970-01-01
  • 2013-10-04
  • 2023-03-23
  • 1970-01-01
相关资源
最近更新 更多