прохождение BOOL при нажатии кнопки назад - PullRequest
0 голосов
/ 28 февраля 2011

Я настроил действие кнопки назад.Я хочу отправить родительскому представлению BOOL, если нажата кнопка назад, но значение bool всегда равно нулю.

мой родитель .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 ]

2 голосов
/ 28 февраля 2011

Вы не передаете 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];
}
0 голосов
/ 28 февраля 2011

Вы создаете новый viewcontroller, не связываясь с истинным родителем.

try

self.parentViewController.myBool = YES;

вместо

theParent *theParentVC = [[addSite alloc] init];
// set parent BOOL
theParentVC.myBool = YES;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...