STORYBOARD – 不包含带标识符的视图控制器

我不断收到以下错误:

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]; } 

我已经在UIStoryboard上设置了identifier ,但是我仍然得到这个错误。

在这里输入图像说明


仅供将来参考:

我正在使用Storyboards在iOS 6上开发。

我遇到了同样的问题,但在检查员中找不到“标识符”字段。 相反,只需将名为“Storyboard ID”的字段设置为您要命名的标识符。 该字段可以在检查器中的“显示标识检查器”选项卡下find。

[注意 – 下面的评论表明,有些人已经发现他们需要(也?)在检查员中设置“故事板ID”下方的“恢复ID”字段。 点击“使用故事板ID”似乎不够。]

下面有一张图片供参考:(在这个例子中,我已经把我的标识符和我的class级一样) 在这里输入图像说明

XCODE 7和XCODE 8中

当你改变故事板ID,你会得到这样的错误,

刚刚清理你的项目( CMD + SHIFT + K

固定! 不仅必须设置segue中的标识符,在我的情况下DrivingDetails,而且我的tableViewController中的标识符必须设置为DrivingDetails …检查我的图片:

在这里输入图像说明

我也删除了导航视图控制器,所以现在2台视图控制器直接与“推”animation连接。

*****编辑为XCODE 7.0 *****

你必须设置storyboardId(在这种情况下,viewController被embedded到导航控制器中:

 let lastMinVc = mainStoryBoard.instantiateViewControllerWithIdentifier("lastMinuteNavController") as! UINavigationController 

在这里输入图像说明

位于Identity Inspector选项卡中的名称,该选项卡名称为Xcode 6.3.2的Storyboard ID,并且已勾选使用Storyboard ID选项。 在这里输入图像说明

添加新的VC到故事板后,只有在设备上,而不是在模拟器上,只是有这个问题。 原来,这是因为有多个故事板本地化 – 风险投资只被添加到主要的一个。 我试图删除其他本地化(其中之一是我的iPhone使用),但仍然有错误。 最后,我不得不用其中的每个VC重新创build其他本地化版本。

我发现它…单击故事板中的视图控制器,单击vc属性检查器左侧的第三个图标 – 在那个scereen上设置调用名称的那个,它表示“身份” – 我的隐藏,我不得不点击身份一词,然后显示storyboardID – 从代码中添加标识符,完成

修改身份检查器中的“故事板ID”(左侧第三个图标)应该可以工作。

如果不是,而且您确定没有错别字,请尝试清理项目(“产品” – >“清理”,或者简单地使用命令+ shift + K)。

编译器显示以下错误:

 Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Storyboard (<UIStoryboard: 0x7fedf2d5c9a0>) doesn't contain a ViewController with identifier 'SBAddEmployeeVC'' 

这里创build的故事板的对象不是包含我们的ViewControllers的主要的故事板。 当我们工作的故事板文件被命名为Main.storyboard 。 所以我们需要参考Main.storyboard的对象。

使用下面的代码:

 UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]]; 

这里storyboardWithName是我们正在使用的故事板文件的名称, bundle指定了我们的故事板所在的包(即mainBundle )。

我的一些视图控制器缺lessstoryboardIdentifier属性。

之前:

 <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"> 

在input标识符的时候,你没有select正确的视图控制器,只要检查一次,如果完成重复该过程。

我得到了同样的错误,我可以通过更改我的项目中的以下更改来解决此问题。 我在督察小组里提到我的class级名字,问题就解决了。 转到 – >右侧面板那里Identity Inspector在自定义类部分

class:你的类名(ViewController)

在“身份”部分故事板ID:您的故事板ID(viewController名称)

在这之后点击使用故事板ID选项。那就是问题完成了。 我希望它会帮助你….

使用您的标识符(@“drivingDetails”)作为Storyboard ID。

这是非常简单的select主故事板中的相应的视图控制器,并检查故事板ID,如果它现在使用它的名称和使用它的标识符。

这里我的第一个是storyboardID让vc = self.storyboard?.instantiateViewController(withIdentifier:“firstone”)as! tabBarViewController

我尝试了所有的上述解决scheme,没有工作。

我做的是:

  • 项目干净
  • 删除派生的数据
  • 重新启动Xcode
  • 重新input以前答案(IB内)中显示的StoryboardID。

然后它的工作。 令人震惊的是,我已经在界面生成器中input了Storyboar ID,并且在再次打开Xcode后被删除/删除。

希望这有助于某人。