这是UINavigationController
子类中我的代码的一部分。
我创建了一个自定义UIButton
,大部分时间都会显示。
如何在特定视图中隐藏它?
我希望能够setHidden
一些ViewControllers中的按钮。 UIButton
是一个属性。
-(void)viewDidLoad
{
[super viewDidLoad];
_coolBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[_coolBtn setFrame:CGRectMake(0, 0, 56, 39)];
[_coolBtn setImage:[UIImage imageNamed:@"top.png"] forState:UIControlStateNormal];
[_coolBtn addTarget:self action:@selector(doSomethingCool) forControlEvents:UIControlEventTouchUpInside];
[self.navigationBar addSubview:_coolBtn];
}
在我要隐藏按钮的ViewDidLoad
的{{1}}内添加:
ViewController
不起作用。
修改
也许是因为我正在创建它的新实例?
我在代码中没有引用这个子类。我唯一做的就是在选择SubClassUInav *test =[[SubClassUInav alloc]init];
[test.coolBtn setHidden:YES];
时将其添加为IB内的自定义类。
答案 0 :(得分:1)
这是你必须做的。
在 SubClassUINav.h :
@interface SubClassUInav : UINaviagationController {}
@property (nonatomic, strong) UIButton *coolBtn;
在 SubClassUINav.m :
@synthesize _coolBtn = coolBtn;
在 MyViewController.m :
中#import "SubClassUINav.h"
// get reference of your nav controller, do not create new instance by alloc-init
SubClassUINav *subClassUINavInstance = (SubClassUINav *) self.navigationController
[subClassUINavInstance.coolBtn setHidden: YES]; //Access your properties
希望你现在明白了。
答案 1 :(得分:1)
你也可以使用像bellow
这样的NotificationCenter从按钮定义类: -
在NSNotificationCenter中添加观察者 [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(HideButton:)
name:@"HideButton"
object:nil];
-(void)HideButton:(NSNotification *)notification {
hide button code
}
使用Bellow代码调用此方法: -
[[NSNotificationCenter defaultCenter] postNotificationName:@"HideButton" object:self];
答案 2 :(得分:0)
你做错了就是这一行
SubClassUInav *test =[[SubClassUInav alloc]init];
这会创建一个新实例,并且在该实例中,按钮状态将被隐藏。在您的类中,您将执行相同的操作,将其添加为子视图。使用该实例并使其隐藏