我的方法是bool
,并返回YES
的值。此方法在BViewController
中声明,我可以在CViewController
中访问此方法并将值设置为NO
吗?
-(BOOL)prefersNavigationBarHidden {
return YES;
}
这样的事可能吗?
[self prefersNavigationBarHidden:NO ];
我知道我可以做那样的事情:
-(BOOL)prefersNavigationBarHidden{
return NO;
}
但是必须在特定事件上触发此方法
感谢您的帮助和快速回答
答案 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
可能不是你的情况,但是你可以得到一个想法。正如我告诉你的,这取决于你想要达到的目标。