我自定义了后退按钮的动作。如果按下后退,我想向父视图发送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];
一切正常,但不是我想要的原因。
感谢任何帮助。
谢谢, 最大
答案 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;