我正在构建一个使用Jeremy Fox的JFDepthView
库的iPad应用程序。对于不熟悉的用户,它基本上允许新的视图控制器进入前台和居中,将父视图发送到背景,然后对其应用模糊算法,以使用户将注意力集中到呈现的顶视图上。一切正常,但是我在设置int的值并将其从提供的topView传递回parentViewController
时遇到问题。
我有TTViewController
这是原始视图控制器。在该视图上点击一个按钮,将弹出JFDepthView
并在TTViewController
上方显示一个名为IndustryViewController
的新视图。当点击IndustryViewController
上的按钮时,我希望该视图消失,并且希望对父级TTViewController
进行特定操作,具体取决于我按下按钮时设置的传回的int
。
我已经在原始(父)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”。 最佳答案
检查self.parentViewController
是否为nil
。我猜想JFDepthView不会自动为您设置parentViewController
。
如果self.depthViewReference
是父视图控制器(即您在其上调用presentViewController:xxx inView:self.view
来呈现当前VC的视图控制器),则可以简化将其强制转换为所需的类TTViewController
并在其上设置defence = 1
的方法。
关于iphone - 将类型为int的变量传递给parentViewController [iOS],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13998412/