C# 抛出Objective-C异常。名称:NSInvalidArgumentException原因:找不到名为';访问"信息"';捆绑
每当我试图以编程方式从另一个故事板访问ViewController时,就会出现此错误。我的xamarin.ios应用程序似乎无法识别保存ViewController的情节提要。我的故事板名称是C# 抛出Objective-C异常。名称:NSInvalidArgumentException原因:找不到名为';访问"信息"';捆绑,c#,ios,xamarin.ios,storyboard,visual-studio-2019,C#,Ios,Xamarin.ios,Storyboard,Visual Studio 2019,每当我试图以编程方式从另一个故事板访问ViewController时,就会出现此错误。我的xamarin.ios应用程序似乎无法识别保存ViewController的情节提要。我的故事板名称是访问\u info.storyboard 我尝试了以下代码 UIStoryboard board = UIStoryboard.FromName("visit_info", null); UIViewController ctrl = (visitControl
访问\u info.storyboard
我尝试了以下代码
UIStoryboard board = UIStoryboard.FromName("visit_info", null);
UIViewController ctrl = (visitController)board.InstantiateViewController("visitController");
ctrl.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
this.PresentViewController(ctrl, true, null);
下面是我在上面第一句话中遇到的全部错误:
Objective-C exception thrown. Name: NSInvalidArgumentException Reason: Could not find a storyboard named 'visit_info' in bundle NSBundle </Users/amer/Library/Developer/CoreSimulator/Devices/3B343541-D0E1-410E-880C-18E9FE0289D8/data/Containers/Bundle/Application/A01C5D60-96A8-4BF8-993B-C0D90EE7EE5A/samra_op2.app> (loaded)
Native stack trace:
0 CoreFoundation 0x00007fff2043a126 __exceptionPreprocess + 242
1 libobjc.A.dylib 0x00007fff20177f78 objc_exception_throw + 48
2 UIKitCore 0x00007fff247e48a6 -[UIStoryboard name] + 0
3 samra_op2 0x0000000100696699 xamarin_dyn_objc_msgSend + 217
4 ??? 0x00000001062ec539 0x0 + 4398695737
引发了Objective-C异常。名称:NSInvalidArgumentException原因:在捆绑包NSBundle(已加载)中找不到名为“访问信息”的情节提要
本机堆栈跟踪:
0 CoreFoundation 0x00007fff2043a126例外预处理+242
1 libobjc.A.dylib 0x00007fff20177f78 objc_异常_抛出+48
2 UIKitCore 0x00007fff247e48a6-[UIStoryboard名称]+0
3 samra_op2 0x0000000100696699 xamarin_dyn_objc_msgSend+217
4.0x00000001062ec539 0x0+4398695737
我想这里有一个输入错误,你的故事板名称是
visit\u into.storyboard
,而在你的代码中是UIStoryboard.FromName(visit\u info
”,null)
请小心进入和信息
您的代码看起来很好:)
更新:
按照我的步骤再次执行此操作:
1.我创建了一个新的iOS项目,并右键单击该项目-->添加
-->新项目
-->ViewController With Storyboard
2.转到刚刚创建的情节提要,转到工具箱,选择新的ViewContrllor并将其添加到情节提要
3.转到情节提要中ViewContrllor的属性
面板,在那里设置类
和情节提要ID
,同时检查使用情节提要ID
4.然后在另一个视图控制器中调用您的代码:
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
UIStoryboard board = UIStoryboard.FromName("visit_info", null);
UIViewController ctrl = (visit_info)board.InstantiateViewController("visit_info");// here use storyboard ID
ctrl.ModalTransitionStyle = UIModalTransitionStyle.CrossDissolve;
this.PresentViewController(ctrl, true, null);
}
我知道答案,但我需要一个解释。当我第一次创建控制器时,我编辑了名称,然后更改了与控制器相关的所有其他名称,包括controller.cs、controller.designer.cs中的控制器类名和控制器属性。当我尝试控制器的旧名称时,它不知怎么起了作用。事实并非如此。我只是在堆栈溢出上写错了名称,而不是在代码上写错了。我只是测试了代码,它工作得很好。请删除visit_info.storyboard并重新创建一个新的故事板,然后再试一次好吗?我尝试了,但没有改变任何内容,仍然面临相同的问题。如果调用UIStoryboard.FromName(“Main”,null);,是否会遇到相同的问题;?如果我使用UIStoryboard.FromName(“Main”,null)代码>它在第二行给了我一个错误,说没有名为visitController的控制器<代码>引发Objective-C异常。名称:NSInvalidArgumentException原因:序列图像板()在项目目标->构建阶段->中不包含标识符为“visitController”的视图控制器,复制捆绑资源-/code>,是否访问到.Storyboard
中?是否在visual studio中?对不起,我错了,我没注意到这是Xamarin。例外情况意味着没有名为“visit_info”的故事板,因此您确实需要检查文件是否被复制。