【问题标题】:set BOOL variable from child class to parent in Objective C在Objective C中将BOOL变量从子类设置为父类
【发布时间】:2016-03-31 17:03:11
【问题描述】:

我有 BaseClass,它是 UIViewController 类和子视图类。在 BaseClass 我有 BOOL 变量 isRegistrationScreenVisible 来显示或隐藏菜单按钮。当我从登录到注册屏幕时,我想设置 isRegistrationScreenVisible = YES;但它没有设置。这是我的课程:

BaseView.h

@interface BaseView : UIViewController
   @property(assign, nonatomic) BOOL isRegistrationScreenVisible;
@end

ChildView.h

#import "BaseView.h"
   @interface LoginViewController : BaseView 
@end

ChildView.m

- (IBAction)showRegistration:(id)sender {
    [super isRegistrationScreenVisible:YES];
    NSLog([super isRegistrationScreenVisible]?@"SET REG SCREEN":@"WE ARE NO");
}

在日志中显示变量设置为“是”,但当它与另一个视图变量连接时仍然是“否”

【问题讨论】:

  • 这是真实的代码吗?你定义了BaseViewController,但继承自BaseView...谁知道文件名。
  • 想让问题变得简单。编辑了问题。谢谢指点。
  • 修改后,试试[super setIsRegistrationScreenVisible:YES];
  • 试过了,没用,下一个视图还是“NO”
  • 无论它们的类层次如何,它们仍然是不同的对象。

标签: ios objective-c


【解决方案1】:

BaseViewController 中,您需要使用与访问它的名称相同的名称声明该属性:

@interface BaseViewController : UIViewController
    @property(assign, nonatomic) BOOL isRegistrationScreenVisible;
@end

【讨论】:

  • 编辑了问题。在stackoverflow的准备问题中是我的错。在实际代码中我有相同的名字。
【解决方案2】:

由于子类继承了你可以使用的属性:

 self.isRegistrationScreenVisible = YES;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2011-03-17
    相关资源
    最近更新 更多