我只是不明白..这在这里和那里发生,但是我找不到黑麦或原因。
香港专业教育学院搜索了一段时间没有运气..也许你们可以告诉我我在做什么错?

我正在从ViewController_B在ViewController_A中设置BOOL。
逐步执行代码,我看到BOOL更改为YES,但是当我发送回VC_A时,它又回到了NO。

更新:全部在主线程上。

这是我的代码。

ViewController_A.h

BOOL shouldLogin;

@property(nonatomic,assign)BOOL shouldLogin;


ViewController_A.m

@synthesize shouldLogin;


//in viewWillAppear of ViewController_A
if (shouldLogin == YES) {
//do something - im trying to get in here but I cant because the BOOL is NO when I come back to this view

}


这是我在ViewController_B中设置BOOL的方法

    ViewController_A * vc = [[ViewController_A alloc]init];
    vc.shouldLogin = YES;
   //stepping through the code and looking at the value, shouldLogin shows YES
    [self dismissModalViewControllerAnimated:YES]; // this drops down VC_B which will show VC_A

//now VC_A just came into view and the BOOL is now NO which makes the compiler skip over my IF statement


更新:删除了我的发布调用,但仍然是同样的问题。

最佳答案

看来您在ViewController_B中的代码正在创建一个全新的ViewController_A,设置shouldLogin标志,然后立即销毁ViewController_A的该实例。我怀疑这是您打算做什么。

我假设您想在先前实例化的shouldLogin上设置ViewController_A标志。您需要将指向ViewController_A的指针传递到ViewController_B,然后使用该指针在ViewController_B中设置标志。您可以使用init上的自定义ViewController_B方法来执行此操作,该方法采用指向ViewController_A的指针并将其存储以供ViewController_B使用。

或者,您可以只在ViewController_B上创建一个属性,该属性可以存储指向ViewController_A的指针,并在创建ViewController_A后让ViewController_B设置此属性。就像是:

@interface ViewController_B : UIViewController

@property (nonatomic,retain) ViewController_A *originalViewController;

@end

@implementation ViewController_B

@synthesize originalViewController;

- (void)someMethod {
    originalViewController.shouldLogin = YES;
    [self dismissModalViewControllerAnimated:YES];
}

@end

@implementation ViewController_A

-(void)someOtherMethod {
     ViewController_B *vcB = [[ViewControllerB alloc] init];
     vcB.originalViewController = self;

     // do something with vcB
}

@end


原谅任何错别字/错误,我实际上并没有尝试过运行。

10-06 05:14