使用故事板一段时间之后我发现它们非常有用,但它们确实有一些限制或者至少是不自然的做事方式.虽然看起来应该为您的应用程序使用单个故事板,但是当您达到中等大小的应用程序时,这会出现几个问题.
所以我的问题是什么是最佳使用方法?
我考虑过使用混合方法将逻辑任务拆分成单独的故事板,但这会导致UX流在代码和故事板之间分开.对我而言,这感觉是创建可重用行为(如登录操作等)的最佳方式.
我还应该考虑一下Xibs的地方吗?本文对许多问题进行了很好的概述,并提出对于只有一个屏幕的场景,在这种情况下应该使用xib.再次,这对我来说不太常见,Apples支持从故事板中实例化未连接的场景,这表明xib将来不会占有一席之地,但我可能错了.
我正在使用iOS 5 SDK创建一个应用程序.我设法使用Storyboard的Segues推送视图,但我找不到弹出当前视图并返回上一个视图的正确方法.
我没有使用任何navigationController(该应用程序没有任何顶部或底部栏).
我不认为使用modal或push segue是另一种方式,因为它实例化一个新的控制器.
我是否必须使用相反动画的自定义Segue并在最后删除视图?或者,还有更好的方法 ?
我有一个viewController,通常(通常)使用push segue访问.这个viewController需要嵌入UINavigationController中.通常,这不是问题.push segue管理推送viewController,因此viewController有它的UINavigationController.
我的问题是,在少数情况下,我想使用模态segue呈现这个相同的viewController.当我这样做时,viewController没有嵌入到navigationController中.有没有办法用segues做到这一点?
我知道这可以通过创建UINavigationController纯粹在没有segue的代码中完成,将rootView设置为viewController,然后以模态方式呈现.这可以使用这样的代码完成:
MyViewController *viewController = [[MyViewController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self presentModalViewController:navController animated:YES];
Run Code Online (Sandbox Code Playgroud)
但是我如何使用Segues做同样的事情呢?
为了进一步说明,这里有一些代码来补充我在prepareForSegue方法中使用接受的答案的方式.
使用模态瞄准时
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue destinationViewController] isEqualToString:@"Modal to MyVC"])
{
UINavigationController *nav = [segue destinationViewController];
MyViewController *vc = [nav topViewController];
//setup vc
}
}
Run Code Online (Sandbox Code Playgroud)
使用Push Segue时
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
if ([[segue destinationViewController] isEqualToString:@"Push to MyVC"])
{
MyViewController *vc = [segue destinationViewController];
//setup vc
}
}
Run Code Online (Sandbox Code Playgroud) 我希望能够[UIStoryboard mainStoryboard]在运行时简单地打电话来获取iPad或iPhone故事板.
我以前从未遇到过这个问题.该应用程序过去运行完美,但现在它总是说这个错误.我尝试过清洁和重启.我试过重置IOS模拟器.我试过删除派生数据.
这就是它所说的:
CompileStoryboard YoungstersTennisApp/Base.lproj/Main_iPhone.storyboard
cd /Users/DJ/Desktop/YoungstersTennisApp
setenv IBSC_MINIMUM_COMPATIBILITY_VERSION 6.0
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
setenv XCODE_DEVELOPER_USR_PATH /Applications/Xcode.app/Contents/Developer/usr/bin/..
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ibtool --errors --warnings --notices --minimum-deployment-target 6.0 --output-format human-readable-text --compile /Users/DJ/Library/Developer/Xcode/DerivedData/YoungstersTennisApp-ftehnuqeslbyekfiszajlixujbqk/Build/Products/Debug-iphonesimulator/YoungstersTennisApp.app/Base.lproj/Main_iPhone.storyboardc /Users/DJ/Desktop/YoungstersTennisApp/YoungstersTennisApp/Base.lproj/Main_iPhone.storyboard
Run Code Online (Sandbox Code Playgroud)
命令/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/ibtool失败,退出代码为255
对此的任何帮助都会很棒.我也有很大的故事板.那有关系吗?
提前致谢!
在iOS 9中,故事板可以通过"故事板引用"连接,该故事板引用通过添加故事板引用并将"引用的ID"设置为另一个故事板文件的名称来链接到第二个故事板.
是否可以在第二个文件中设置展开segue以展开第一个文件中的场景?如果是这样,在Interface Builder或代码中涉及哪些步骤?
在xcode 7.2中,对象列表中没有Storyboard Entry Point项.我需要使用Storyboard Entry Point,我在谷歌搜索中找不到任何类似的问题所以任何人都可以帮助我.
当我使用我的应用程序一段时间后,我收到以下错误.通常需要50到100次动作才能导致坠机.虽然我正在使用故事板,但我没有理解它,这是一个NIB错误.
Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:
'Could not load NIB in bundle: 'NSBundle
</Users/me/Library/Application Support/iPhone Simulator/5.0/Applications/GUID/appname.app>
(loaded)' with name 'MainStoryboard_iPhone.storyboardc/q8p-MH-tsT-view-acD-hJ-g0C''
Run Code Online (Sandbox Code Playgroud)
我不是100%肯定从哪里开始寻找,但我认为这意味着故事板是腐败的?
我查看了我的所有源代码,并且我没有任何字符串"nib",因此没有nibWithNibName调用等.我也没有MainWindow.xib,虽然我尝试创建一个.我不确定在使用故事板时是否可以将其设置为主界面.但.xcodeproj/project.pbxproj文件中有一个.nib引用:
/* Begin PBXBuildRule section */
148BDD4C14AE8D5E002C30ED /* PBXBuildRule */ = {
isa = PBXBuildRule;
compilerSpec = com.apple.compilers.proxy.script;
fileType = wrapper.nib;
isEditable = 1;
outputFiles = (
);
script = "$(DEVELOPER_BIN_DIR)/ibtool\n";
};
Run Code Online (Sandbox Code Playgroud)
我在Xcode 4.2中使用故事板.我的主要故事板设置为MainStoryboard_iPhone,其文件名为MainStoryboard_iPhone.storyboard.
崩溃发生在iOS 5模拟器中.
我正在根据苹果规范创建自定义容器视图.我想使用storyboard连接三个静态子UIViewControllers.故事板中是否有一种简单的方法可以通过故事板Relationship中的UINavigationController 进行连接?

根据我的研究,似乎这是不可能的.
我的团队目前正在开发一个iOS应用程序,我们根本不使用故事板.我们在代码中创建UI.因此,为了保持一致性,如果我们可以完全在代码中创建Watch App目标,那就太棒了.
但是,"WatchKit入门"视频和WatchKit框架参考都
提到您需要Watch App目标的故事板.此外,在WKInterfaceObject.h该init方法中标记为不可用:
- (instancetype)init NS_UNAVAILABLE;
Run Code Online (Sandbox Code Playgroud)
那么在不使用故事板的情况下创建Watch App真的不可能吗?如果是这样,这个决定背后的原因是什么?我的意思是,我们可以完全用代码创建一个iPhone/iPad应用程序,那么为什么Watch会有所不同呢?