视图控制器中的对象需要从视图控制器执行展开segue。如何才能做到这一点?

时间:2014-05-03 16:44:41

标签: ios objective-c

TL; DR:我在VC中有一个需要从VC启动展开方法的对象。谁知道怎么做?


详情&代码:

我有一个名为UIImageViewQuestion的自定义UIImageView。当它包含在(PreKnowledgeViewController)中的viewController被加载时,我运行这个标准的创建代码:

UIImageViewQuestion *imageView = [[UIImageViewQuestion alloc] initWithImage:questionsArray[[myVariables sharedGameData].currentQuestionInt]]; imageView.contentMode = UIViewContentModeScaleAspectFit; imageView.clipsToBounds = YES; imageView.frame = CGRectMake(0,0, 320, 504); [self.view addSubview:imageView]; imageView.userInteractionEnabled = true;

标准。但是,当UIImageViewQuestion接收到点击时,我在那里执行一些逻辑来确定点击的位置并决定用户是否选择了正确的位置。在此之后,我需要从PreKnowledgeViewController执行unwindSegue。

另外,如果我的逻辑或代码中有任何明显的错误,请告诉我。我绝对不知道自己在做什么。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

首先,我建议您将图片视图重命名为不使用UI前缀。通常,以现有框架前缀开头的命名类可能会导致冲突,如果其他人需要阅读您的代码,肯定会引起混淆。

否则此问题已经得到解答。

How to perform Unwind segue programmatically?

What are Unwind segues for and how do you use them?

答案 1 :(得分:0)

找到我的解决方案。在创建对象时将ViewController传递给属性允许您在需要时调用类似下面的内容。

在视图控制器

`UIImageViewQuestion *imageView = [[UIImageViewQuestion alloc] initWithImage: (... other init info)
imageView.preKnowledgeViewController = self;`

在创建的对象中

[_preKnowledgeViewController.navigationController popViewControllerAnimated:true];

绝对是一个非常明显的答案,但我希望有一些更干净的东西。这适用于现在。

谢谢大家