按下后退按钮时传递BOOL

时间:2011-02-28 13:20:08

标签: iphone viewcontroller

我自定义了后退按钮的动作。如果按下后退,我想向父视图发送BOOL,但bool值始终为null。

我的父母.h


    [...skip...]

    BOOL myBool;

    [...skip....]

我的父母.m


#import "theChild.h"

....


- (void)viewWillAppear:(BOOL)animated {
    NSLog(@"myBool is %d", (int)myBool);
}

-(IBAction)callTheChild:(id)sender {
    theChild *theChildVC = [[theChild alloc] initWithNibName:@"theChild" bundle:nil];
        // set something
    [self.navigationController pushViewController:theChildVC animated:YES];
    [theChildVC release];
}

在我的theChild .m



#import "theParent.h"
....
....
-(void)backAction:(id)sender {

    theParent *theParentVC = [[addSite alloc] init];
    // set parent BOOL
    theParentVC.myBool = YES;
    [addVC release];
    // dismiss child view
    [self.navigationController popViewControllerAnimated:YES];
}

当父项出现时,myBool为空。

如果我改变


    [self.navigationController popViewControllerAnimated:YES];


    [self.navigationController pushViewController:theParentVC animated:YES];

一切正常,但不是我想要的原因。

感谢任何帮助。

谢谢, 最大

2 个答案:

答案 0 :(得分:2)

你没有将bool传回给父母,你正在创建一个全新的对象并给予bool代替!

看看这一行:

theParent *theParentVC = [[addSite alloc] init];

该行创建了一个新的父对象。您可能想要使用原始父对象:)

在theChild.h中

[snip]
theParentVC *parent;
[snip]

创建孩子时

-(IBAction)callTheChild:(id)sender {
    theChild *theChildVC = [[theChild alloc] initWithNibName:@"theChild" bundle:nil];
    [theChild setParent:self];
    [self.navigationController pushViewController:theChildVC animated:YES];
    [theChildVC release];
}

以及何时更新父

-(void)backAction:(id)sender {
    // Update the parent
    parent.myBool = YES;

    // dismiss child view
    [self.navigationController popViewControllerAnimated:YES];
}

答案 1 :(得分:0)

您正在创建一个新的viewcontroller,而不是链接回真正的父级。

self.parentViewController.myBool = YES;

而不是

theParent *theParentVC = [[addSite alloc] init];
// set parent BOOL
theParentVC.myBool = YES;