ほとんどすべてのビューが同じ背景と同じアクションをコミットする同じボタンのセットを持つアプリを作成しています。そのため、同じ背景とボタンを持つカスタム ビューを作成しています。
customView.h
@interface BMBackGroundView : UIView{
}
@property(nonatomic, strong) UIImageView *imageView;
@property(nonatomic, retain) UIButton *closeButton;
@property(nonatomic, retain) UIButton *menuButton;
customView.m
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];
self.imageView = [[UIImageView alloc]initWithFrame:CGRectMake(104, 36, 275, 33)];
[self addSubview:self.imageView];
CGRect frameForCloseButton = CGRectMake(44, 0, 48, 44);
CGRect frameForMenuButton = CGRectMake(382, 0, 48, 44);
self.closeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.closeButton setFrame:frameForCloseButton];
[self.closeButton setImage:[UIImage imageNamed:@"cancel.png"] forState:UIControlStateNormal];
[self.closeButton addTarget:self action:@selector(close:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.closeButton];
self.menuButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.menuButton setFrame:frameForMenuButton];
[self.menuButton setImage:[UIImage imageNamed:@"menu.png"] forState:UIControlStateNormal];
[self.menuButton addTarget:self action:@selector(showMenu:) forControlEvents:UIControlEventTouchUpInside];
[self addSubview:self.menuButton];
}
return self;
}
-(void)close{
NSLog(@"close button pressed");
}
-(void)showMenu:(id)sender{
NSLog(@"menu button pressed");
}
viewController でカスタム ビューを取得できますが、両方のメソッドでナビゲーション コントローラーにアクセスしたいのですが、これは実行できず、viewControllers でカスタム ビューの UI 要素にアクセスできません。
close と showMenu メソッドで。
[self.navigationController popToRootViewControllerAnimated:YES];
そして、このカスタム ビューを取得している ViewController.m で、ボタンの 1 つを非表示にしたいと考えています。
-(void)loadView{
UIView *learnMoreView = [BMBackGroundView new];
self.view = learnMoreView;
learnMoreView.uielementOfCustomView //which i am not able to access
[learnMoreView release];
}
注:私はInterface Builderを使用していません