我正在构建一个使用Jeremy Fox的JFDepthView
库的iPad应用程序。对于那些不熟悉的人来说,它基本上允许新的视图控制器带来前面和中心,将父视图发送到背景并对其应用模糊算法以将用户焦点带到呈现的顶视图。这一切都很完美,但我在设置int的值并将其从显示的topView传递回parentViewController
时遇到问题。
我有TTViewController
这是原始视图控制器。此视图会点按一个按钮,JFDepthView
会启动并在名为TTViewController
的{{1}}之上显示新视图。当点击IndustryViewController
上的按钮时,我想要取消该视图并在父IndustryViewController
上执行特定操作,具体取决于按下该按钮时我设置的TTViewController
我在原始(父)viewController中为我的int创建了一个属性。
int
在我的子视图控制器(JFDepthView顶部显示的控制器)中,我试图访问父级并设置变量的值,然后关闭视图。
@interface TTViewController : UIViewController <JFDepthViewDelegate> {
}
@property (nonatomic, assign) int defence;
@end
我没有错误或警告,一切都很好。但是int'debence'的值总是为0.我显然做错了,并且对parentViewController设置缺乏了解。任何人都可以填补空白或指出我正确的方向吗?
编辑:似乎如果我退出@implementation IndustryViewController
- (IBAction)defenceBtnPressed:(id)sender
{
TTViewController *viewController = (TTViewController *)self.parentViewController;
viewController.defence = 1;
[self.depthViewReference dismissPresentedViewInView:self.presentedInView animated:YES];
}
和parentViewController
,他们都是presentingViewController
。我在设置后立即注销了防御变量,它实际上从未实际设置为'1'。
答案 0 :(得分:1)
检查self.parentViewController
是否为nil
。我猜想JFDepthView不会自动为你设置parentViewController
。
如果self.depthViewReference
是父视图控制器(即您调用presentViewController:xxx inView:self.view
以显示当前VC的那个),则将其简化为所需的类TTViewController
并设置{ {1}}就此而言。