布尔变量的值不会在故事板中将 dismissViewControllerAnimated 从 Child 更改为 Parent

Boolean Variable's value not change dismissViewControllerAnimated From Child to Parent in Storyboard

我不是初学者,但我想不通这个愚蠢的问题。我有两个视图控制器,例如 ParentChild 是 classes。 Parent 是基础 class 而 child 是基础 class 但我可以't 继承了除这些 bool 之外的任何数据。

在 Parent Class 我使用一个 BOOL 我在 Parent.h

声明的变量
@property (nonatomic, assign) BOOL isChange;  

之后我合成了这个变量并在 viewDidLoad

中初始化默认值 False
isChange = FALSE;  

现在,我在 Child Class 中使用此变量,并将值更改为 True

Parent.isChange = TRUE;  

在此更改之前,我还 allocinit Parent Class 在 Childclass。

Parent = [[Parent alloc] init];  

但问题是当我关闭此 Class 并转到 Parent Class isChange 值未更改。

[self dismissViewControllerAnimated:YES completion:nil];  

我签到了ParentClass

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    if (isChange == TRUE) {  // Here isChange Return NO.
        [self refresh:nil];
    }
}

我想不通我的错误。

[[Parent alloc] init] 创建 Parent 的新实例。如果您在该实例中更改了某些 属性 的值,则没有理由期望该值在 Parent.

的其他一些实例中也会发生变化

如果您想验证发生了什么,请在进行分配时打印父地址,并在测试 isChange 时打印 self 的值。如果它们不相同,那么您正在处理不同的对象。

您无法获得 TRUE 值,因为在 child class 中您的 alloc init。它创建了一个新的 Instance。最好全局声明这个布尔变量。我会给你这个例子。

Common.h

中声明变量
@property (nonatomic) BOOL isChange;  

Common.m

中定义
- (void)checkIsAnyChange:(BOOL)isChange {
    _isChange = isChange;
    [self updateChangeCount:UIDocumentChangeDone];
}  

现在在 Parent 和 Child Class 中使用此 Boolean 进行检查。