Modal segue无法使用代码

时间:2013-05-04 21:29:15

标签: iphone ios modal-dialog segue

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

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

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

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

的segue

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

EDITTING:

其他一些发现:

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

认为它可能是一个线程相关的问题我在dispatch_async(dispatch_get_main_queue()中包含了performSegue ......但错误是一样的!

2 个答案:

答案 0 :(得分:0)

如果您的目标viewcontroller位于navigationcontroller中,请查看以下问题:

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

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

到你开始的viewcontroller。因此,尝试删除seque并将其从

拖出

的ViewController。

答案 1 :(得分: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];