有几天我遇到了这个问题而且我还没有设法解决它..
我完成了iPhone 5的故事板,现在我已经为iPhone 6创建了一个新的故事板,我从iPhone 5的故事板中复制了各种ViewController,我做了一些更改。
现在我在iPhone 6模拟器上运行我的应用程序无变化我已经看到了!
我附上一些截图:
例如我在蓝色中更改了UICollectionView的背景颜色,但结果如下:
我尝试重置模拟器,删除DerivedData文件夹,重新启动Xcode,删除Storyboard 6并重新添加,我不知道还有什么可以尝试,我从未遇到过这种问题
我尝试使用Xcode 6.4,现在我已升级到Xcode 7但问题仍然存在......
修改:
在AppDelegate中我以这种方式抓住了正确的故事板:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
_storyboard = [self grabStoryboard];
//login-registrati view
lvc = (LoginController *)[_storyboard instantiateViewControllerWithIdentifier:@"login"];
tabbarController = (UITabBarController *)self.window.rootViewController;
if (isLogged == YES) {
self.window.rootViewController = tabbarController;
}
else {
self.window.rootViewController = lvc;
}
[self.window makeKeyAndVisible];
...
}
- (UIStoryboard *)grabStoryboard {
int screenHeight = [UIScreen mainScreen].bounds.size.height;
UIStoryboard *storyboard;
switch (screenHeight) {
// iPhone 4s
case 480:
storyboard = [UIStoryboard storyboardWithName:@"Main3.5" bundle:nil];
break;
// iPhone 5s
case 568:
storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
break;
// iPhone 6
case 667:
storyboard = [UIStoryboard storyboardWithName:@"Main6" bundle:nil];
break;
// iPhone 6 Plus
case 736:
storyboard = [UIStoryboard storyboardWithName:@"Main6+" bundle:nil];
break;
}
return storyboard;
}
我知道模拟器得到正确的故事板是在一些ViewController中我可以看到更改,但是如果我更改与作为根视图控制器的UITabbarController相关的ViewController,则模拟器上没有更改。
答案 0 :(得分:1)
尝试为UIViewController创建一个属性:
@property (strong, nonatomic) UIViewController *initialViewController;
并在获得新的故事板参考后执行此操作:
_storyboard = [self grabStoryboard];
self.initialViewController = [_storyboard instantiateInitialViewController];
然后更改您的rootview
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = self.initialViewController;
[self.window makeKeyAndVisible];
编辑:
我甚至尝试过你的方式。它也有效。请确保您已在xcode中设置了视图控制器标识符,并且它与“login”匹配
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
lvc = (LoginController *)[_storyboard instantiateViewControllerWithIdentifier:@"login"];
self.window.rootViewController = lvc;
[self.window makeKeyAndVisible];
来自文档:
<强> instantiateInitialViewController 强>
在视图中实例化并返回初始视图控制器 控制器图。
通常,仅在转换到其他情节提要文件中的初始视图控制器时才使用此方法。
编辑Ilario:
我接受了你的答案,因为它让我朝着正确的方向前进,我以这种方式解决了变化:
tabbarController = (UITabbarController *)[_storyboard instantiateInitialViewController];