我正在构建一个使用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设置缺乏了解。任何人都可以填补空白或为我指明正确的方向吗?

编辑:看来,如果我注销parentViewControllerpresentingViewController他们都是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/

10-13 04:00