mat*_*mat 168 xcode objective-c storyboard ios
我一直收到以下错误:
Storyboard (<UIStoryboard: 0x7ebdd20>) doesn't contain a view controller
with identifier 'drivingDetails'
Run Code Online (Sandbox Code Playgroud)
这是代码:
- (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];
}
Run Code Online (Sandbox Code Playgroud)
我已经设置了identifier,UIStoryboard但我仍然收到此错误.

kha*_*liq 240
仅供将来参考:
我正在使用Storyboard在iOS 6上进行开发.
我遇到了同样的问题,但我在检查器中找不到"标识符"字段.相反,只需将名为"Storyboard ID"的字段设置为您将为标识符命名的字段.可以在检查器的"显示标识检查器"选项卡下找到此字段.
[注意 - 下面的评论表明,有些人发现他们需要(也?)在检查器中的故事板ID下方设置"恢复ID"字段.点击"使用故事板ID"似乎不够.]
下面有一张图片供参考:(在这个例子中,我将我的标识符命名为与我的类相同)

Ted*_*Ted 185
在XCODE 7中 8 | 9,
当你改变故事板id并且你得到这样的错误时,
只是清理你的项目(CMD + SHIFT + K)
mat*_*mat 41
固定!不仅必须设置segue中的标识符,在我的例子中是DrivingDetails,而且我的tableViewController中的标识符必须设置为DrivingDetails ...检查我的图片:

我还删除了导航视图控制器,所以现在2个表视图控制器直接连接"推"动画.
*****编辑XCODE 7.0*****
你必须设置storyboardId(在这种情况下,viewController嵌入在一个导航控制器中:
let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController
Run Code Online (Sandbox Code Playgroud)
Raf*_*ael 21
有时这些术语之间存在混淆.
let storyboard = UIStoryboard(name: "StoryboardFileName", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "StoryboardID")
self.present(controller, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)
请注意,这"StoryboardFileName"是Storyboard 的文件名,而不是此处的ID,其中"StoryboardID"实际上是您在身份检查器中手动设置的ID.有时人们对两者之间的区别感到困惑,他们认为第一个实际上是StoryboardID,第二个是ViewController类名.
我已经看到了一些关于这个的混淆,所以我想在这个问题上发帖,这个问题吸引了许多Swift中的新程序员带来了类似的问题.
在将故事板添加到故事板后只是在设备上而不是在模拟器上添加了这个问题.事实证明,这是由于有多个故事板本地化 - VC只被添加到主要的一个.我尝试删除其他本地化(其中一个是我的iPhone使用的)但仍然有错误.最后,我不得不在每个中重新创建具有新VC 的其他本地化.
编译器显示以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a
ViewController with identifier 'SBAddEmployeeVC''
Run Code Online (Sandbox Code Playgroud)
这里创建的故事板的对象不是包含我们的 ViewControllers 的主故事板。由于故事板文件上,我们的工作被命名为 Main.storyboard。所以我们需要引用Main.storyboard的对象。
为此使用以下代码:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]];
Run Code Online (Sandbox Code Playgroud)
这storyboardWithName是我们正在使用的故事板文件的名称,并bundle指定我们的故事板所在的包(即mainBundle)。
小智 5
对于那些与@Ravi Bhanushali 有相同问题的人,这里有一个 Swift 4 解决方案:
let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)