更改bool方法的值

时间:2016-02-18 07:57:32

标签: ios objective-c

我的方法是bool,并返回YES的值。此方法在BViewController中声明,我可以在CViewController中访问此方法并将值设置为NO吗?

-(BOOL)prefersNavigationBarHidden {
    return YES;
}

这样的事可能吗?

[self prefersNavigationBarHidden:NO ];

我知道我可以做那样的事情:

 -(BOOL)prefersNavigationBarHidden{
        return NO;
    }

但是必须在特定事件上触发此方法

感谢您的帮助和快速回答

2 个答案:

答案 0 :(得分:3)

目前,您的功能已经过硬编码,并始终返回YES。如果您希望能够从视图控制器B内部或从其他位置更改它,则需要将值存储在某处。

您可以将其存储为属性:

@property (assign, nonatomic) BOOL prefersNavigationBarHidden;

并将其公开在视图控制器B的.h文件中。这样,视图控制器C将可以访问它,并且可以更改它。

答案 1 :(得分:0)

这取决于您要使用该方法的上下文。如果它是一个用于告诉视图控制器它是否可以显示导航栏的方法,则一个选项是创建一个超类,视图控制器C从该类继承,并在那里定义该方法。然后,在视图控制器C中覆盖该方法,该方法应该从超类继承。像这样:

@interface MySuperclass : UIViewController
- (BOOL)prefersNavigationBarHidden;
@end

@implementation MySuperclass
-(BOOL)prefersNavigationBarHidden {
    return YES;
}

/*
  Use the value returned by the method to achieve what you want
  with that boolean value
*/
@end

//--------------------

@interface ViewControllerC : MySuperclass
@end

@implementation ViewControllerC
- (BOOL)prefersNavigationBarHidden {
    return NO; // return no for example
}
@end

可能不是你的情况,但是你可以得到一个想法。正如我告诉你的,这取决于你想要达到的目标。