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后被删除/删除。
希望这有助于某人。