0

我正在构建一个使用 Jeremy FoxJFDepthView库的 iPad 应用程序。对于那些不熟悉的人来说,它基本上允许一个新的视图控制器放在前面和中心,将父视图发送到背景并对其应用模糊算法以将用户焦点带到呈现的顶视图上。这一切都很完美,但我在设置 int 的值并将其parentViewController从呈现的 topView 传递回时遇到问题。

我有TTViewController哪个是原始视图控制器。在这个视图上点击一个按钮并启动并在被调用JFDepthView的顶部呈现一个新视图。当点击按钮时,我希望关闭该视图并在父级上发生特定操作,具体取决于我在按下按钮时设置的回传。TTViewControllerIndustryViewControllerIndustryViewControllerTTViewControllerint

我在原始(父)viewController 中为我的 int 创建了一个属性。

@interface TTViewController : UIViewController <JFDepthViewDelegate> {

}

@property (nonatomic, assign) int          defence;

@end

在我的子视图控制器(JFDepthView 在顶部显示的那个)中,我试图访问父视图并设置变量的值,然后关闭视图。

@implementation IndustryViewController

- (IBAction)defenceBtnPressed:(id)sender
{
    TTViewController *viewController = (TTViewController *)self.parentViewController;
    viewController.defence = 1;
    [self.depthViewReference dismissPresentedViewInView:self.presentedInView animated:YES];
}

我没有收到任何错误或警告,一切正常。但是 int 'defence' 的值始终为 0。我显然做错了什么,对 parentViewController 设置缺乏了解。任何人都可以填写空白或指出正确的方向吗?

编辑:似乎如果我注销parentViewController并且presentingViewController它们都是NULL. 在设置防御变量后,我也立即注销了它,它实际上从未设置为“1”。

4

1 回答 1

1

检查是否self.parentViewControllernil. 我猜想 JFDepthView 不会parentViewController为您自动设置。

如果self.depthViewReference是父视图控制器(即您调用presentViewController:xxx inView:self.view以呈现当前 VC 的那个),则将其简化转换为所需的类TTViewControllerdefence = 1在其上进行设置。

于 2012-12-21T23:19:00.807 回答