2013-05-04 41 views
0

我已经在一个问题上花了一整天的时间,但还没有找到解决方案。我有一个UITabBarViewController,我试图从其中一个选项卡中启动一个模式的segue。我已经创建了我想继续使用的视图,自己创建了segue(从选项卡的视图控制器到目标视图控制器)和标识符。为了测试我赛格瑞我在标签中创建一个UIButton并写上其作用如下代码:模态不符合代码

[self performSegueWithIdentifier:@"showProductInfo" sender:self]; 

模态SEGUE工作的罚款。但是,如果我尝试编写相同的代码以在其他地方执行(在收到Web服务响应后调用的特定方法内),那么segue根本不起作用。我得到以下错误:

终止应用程序由于未捕获的异常“NSInvalidArgumentException”,理由是:“接收器()没有赛格瑞与标识符‘showProductInfo’”

这是推动我疯了!任何帮助更受欢迎。

EDITTING:

一些额外的调查结果:

如果我脱下performSegue从我目前使用的(其中的方式是通过DidFinishLoading调用),并把它放在viewDidLoad中进行SEGUE方法成功。

思考,这可能是一个线程相关的问题我包括performSegue一个dispatch_async(dispatch_get_main_queue()内......但错误是一样的!

+0

确保你不在viewDidLoad中执行模态,但是在viewDidAppear中。在viewDidAppear之前没有显示出显示模式的视图。 – 2017-08-19 19:02:57

回答

0

如果你的目的地的ViewController是navigationcontroller内,然后坐看这个问题:

http://stackoverflow.com/questions/8041237/how-to-set-the-delegate-with-a-storyboard 

此外,从它看起来像你正试图执行不附加

你从开始的ViewController的SEGUE错误,请尝试去除塞克一nd将它从

视图控制器拖动。

+0

嗨Vishal,我没有使用navigationcontroller。关于正确的附件,我做了控制+从我的“从”视图下方的黄色框拖动到目标视图。这应该连接viewcontroller本身,对吧? – user2350758 2013-05-05 12:07:22

0

当前视图控制器必须从故事板加载。如果其故事板属性为零,也许是因为您自己分配并初始化了视图控制器,则此方法会引发异常。

请确保您有故事板ID为您的目的地VC(在这个例子中myViewController)。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:[NSBundle mainBundle]]; 
UIViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyController"]; 
[self.navigationController pushViewController:myViewController animated:YES];