0

我已经花了一整天的时间在一个问题上,但还没有找到解决方案。我有一个 UITabBarViewController,我正试图从它的一个选项卡中触发模态序列。我已经创建了我想要转场的视图,创建了转场本身(从选项卡的视图控制器到目标的视图控制器)和标识符。为了测试我的 segue,我在选项卡中创建了一个 UIButton 并在其操作上编写了以下代码:

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

模态转场运行良好。但是,如果我尝试编写要在其他地方执行的相同代码(在我收到 Web 服务响应后调用的特定方法内),则 segue 根本不起作用。我收到以下错误:

由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'Receiver()没有标识符'showProductInfo'的segue'

这真让我抓狂!任何帮助都更受欢迎。

编辑:

一些额外的发现:

如果我从我当前使用的方法中取出 performSegue(顺便说一下,由 DidFinishLoading 调用)并将其放在 ViewDidLoad 上,则成功执行 segue。

认为这可能是与线程相关的问题,我将 performSegue 包含在 dispatch_async(dispatch_get_main_queue()... 但是错误是一样的!

4

2 回答 2

0

如果您的目标视图控制器位于导航控制器内,请查看以下问题:

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

此外,从错误看来,您尝试执行的 segue 未附加

到您开始的视图控制器。因此,尝试删除序列并将其从

视图控制器。

于 2013-05-05T02:56:09.793 回答
0

当前视图控制器必须是从情节提要中加载的。如果它的 storyboard 属性为 nil,可能是因为你自己分配和初始化了视图控制器,这个方法会抛出一个异常。

确保您有目标 VC 的 Storyboard ID(在本例中为 myViewController)。

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"myStoryboard" bundle:[NSBundle mainBundle]];
UIViewController *myViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyController"];
[self.navigationController pushViewController:myViewController animated:YES];
于 2017-06-08T19:20:43.430 回答