我一直收到以下错误:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller
with identifier 'drivingDetails'
这是代码:
- (void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UIViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"drivingDetails"];
controller.title = [[dao libraryItemAtIndex:indexPath.row] valueForKey:@"name"];
[self.navigationController pushViewController:controller animated:YES];
}
我已在identifier
上设置UIStoryboard
,但我仍然收到此错误。
答案 0 :(得分:236)
仅供将来参考:
我正在使用Storyboard在iOS 6上进行开发。
我遇到了同样的问题,但我在检查器中找不到“标识符”字段。 相反,只需将名为“Storyboard ID”的字段设置为您将为标识符命名的字段。可以在检查器中的“显示标识检查器”选项卡下找到此字段。
[注意 - 下面的评论表明,有些人发现他们需要(也?)在检查器中的故事板ID下方设置“恢复ID”字段。点击“使用故事板ID”似乎不够。]
下面有一张图片供参考:(在这个例子中,我将我的标识符命名为与我的类相同)
答案 1 :(得分:179)
在 XCODE 7 |中8 | 9 ,
当您更改故事板ID并且出现此类错误时,
清洁您的项目( CMD + SHIFT + K )
答案 2 :(得分:40)
固定!不仅必须设置segue中的标识符,在我的例子中是DrivingDetails,而且我的tableViewController中的标识符必须设置为DrivingDetails ...查看我的图片:
我还删除了导航视图控制器,所以现在2个表视图控制器直接连接“推”动画。
*****编辑XCODE 7.0 *****
你必须设置storyboardId(在这种情况下,viewController嵌入在导航控制器中:
let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController
答案 3 :(得分:14)
有时候这些术语之间存在混淆。
// Swift 4
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)
请注意,"StoryboardFileName"
是故事板的文件名,而不是此处的ID,其中"StoryboardID"
实际上是您在身份检查器中手动设置的ID。有时人们对两者之间的区别感到困惑,他们认为第一个实际上是StoryboardID,第二个是ViewController类名。
我已经看到了一些关于这个的混淆,所以我想在这个问题上发帖,这个问题吸引了许多Swift中的新程序员带来了类似的问题。
答案 4 :(得分:14)
标识位于Identity Inspector标签中,名为Storyboard ID for Xcode 6.3.2并选中使用Storyboard ID选项。
答案 5 :(得分:9)
在故事板中添加新VC但仅在设备上而不是在模拟器上添加此问题。事实证明,这是由于有多个故事板本地化 - VC只被添加到主要的一个。我尝试删除其他本地化(其中一个是我的iPhone使用的)但仍然有错误。最后,我不得不重新创建其他本地化 每个中的新VC。
答案 6 :(得分:4)
我发现了...... 单击storyboard中的视图控制器, 单击vc属性检查器左侧的第三个图标 - 您设置呼叫名称的图标 在那个场景上它说'身份' - 我的隐藏,我不得不点击身份一词 然后显示storyboardID - 从代码中添加标识符,完成
答案 7 :(得分:4)
编译器显示以下错误:
$(document).ready(function() {
$("img").click(function() {
if($(this).attr('alt') === 'PEOPLE') {
$('.core-tabSec').hide();
$('#tab-1').show();
}
else if($(this).attr('alt') === 'PASSION') {
$('.core-tabSec').hide();
$('#tab2').show();
}
else {
$('.core-tabSec').hide();
$('#tab3').show();
}
});
});
这里创建的故事板的对象不是包含ViewControllers的主要故事板。我们工作的故事板文件被命名为 的 Main.storyboard 即可。所以我们需要引用 Main.storyboard 的对象。
使用以下代码:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a
ViewController with identifier 'SBAddEmployeeVC''
此处UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
是我们正在使用的故事板文件的名称,storyboardWithName
指定了我们的故事板所在的捆绑包(即bundle
)。
答案 8 :(得分:4)
对于那些与@Ravi Bhanushali有同样问题的人,这里有一个Swift 4解决方案:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
答案 9 :(得分:1)
我的一些视图控制器缺少 storyboardIdentifier 属性。
在:
<viewController
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
后:
<viewController
storyboardIdentifier="YourViewControllerName" <----
id="pka-il-u5E"
customClass="YourViewControllerName"
customModule="ModuleName"
customModuleProvider="target"
sceneMemberID="viewController">
答案 10 :(得分:1)
我遇到了同样的问题。我已经给出了标识符,但编译器给出了问题,所以我创建了新控制器,并为该控制器提供了一个新 ID 并添加了它,它运行良好!我也添加了豆荚,但不知道为什么会出现错误,但现在它消失了!另外还可以尝试通过按 CMD+SHIFT+K 键来清理您的项目。让我知道它是否有效。
答案 11 :(得分:0)
我尝试了所有上述解决方案,但都没有效果。
我做的是:
然后它奏效了。令人震惊的是,我在界面构建器中输入了Storyboar ID,并在再次打开Xcode后删除/删除了它。
希望这有助于某人。
答案 12 :(得分:0)
非常简单地选择主故事板中的相应视图控制器并检查storyboardID,如果它现在在给出名称并使用它的标识符中使用它。
这里我的第一个是storyboardID 让vc = self.storyboard?.instantiateViewController(withIdentifier:&#34; firstone&#34;)as! tabBarViewController
答案 13 :(得分:0)
输入标识符时,如果没有选择正确的视图控制器,只需检查一次是否再次重复该过程。
答案 14 :(得分:0)
使用您的标识符(@&#34; drivingDetails&#34;)作为故事板ID。
答案 15 :(得分:0)
答案 16 :(得分:0)
清理所有内容并关闭Xcode并不能解决我的问题。
我必须删除viewController并使用新标识符创建一个新的
。答案 17 :(得分:0)
注意:如果您在项目中使用可可足类,请先运行pod deintegrate
和rm Podfile.lock
然后在任何第三方代码编辑器(如VSCode)中打开您的项目文件夹,并对引发错误的ViewController名称进行全局搜索。
现在一切正常。
这通常是在Xcode中重命名文件时引起的。
答案 18 :(得分:0)
我遇到了同样的错误,我可以通过更改项目中的以下更改来解决此问题。我在检查器面板中提到了我的类名,然后问题就解决了。 Goto-&gt;右侧面板有Identity Inspector 在自定义类部分
class:你的类名(ViewController)
在“身份”部分 故事板ID:您的故事板ID(viewController名称)
在此之后单击“使用故事板ID”选项。那就是问题已经完成。我希望它能帮助你......
答案 19 :(得分:0)
检查你的语言,可能(基础)有你的控制器,但可能是特定的故事板没有