当 UIView 的子视图不起作用时,在 UI Button 上点击方法
Posted
技术标签:
【中文标题】当 UIView 的子视图不起作用时,在 UI Button 上点击方法【英文标题】:Tap method on UIButton when its a sub view of UIView not working 【发布时间】:2015-08-19 21:33:29 【问题描述】:点击 UIButton 时出现 EXC_BAD_ACCESS 错误。如果我将逻辑移动到RootViewController.m
它可以工作,但在我的PanelViewController.m
中实现时则不行。我不明白为什么这不起作用,我缺少什么以及如何使它起作用?
RootViewController.m
#import "RootViewController.h"
#import "PanelViewController.h"
@interface ListViewRootController ()
@end
@implementation ListViewRootController
- (void)viewDidLoad
[super viewDidLoad];
[self.view setFrame:CGRectMake(0, [[UIScreen mainScreen] bounds].size.height, [[UIScreen mainScreen] bounds].size.width, [[UIScreen mainScreen] bounds].size.height)];
[self.view setBackgroundColor:[UIColor blueColor]];
PanelViewController *panelView = [[PanelViewController alloc] init];
[self.view addSubview:panelView.view];
@end
PanelViewController.m
#import "PanelViewController.h"
@interface PanelViewController ()
@end
@implementation PanelViewController
- (void)viewDidLoad
[super viewDidLoad];
UIView *topBar = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 60)];
topBar.backgroundColor = [UIColor whiteColor];
UIButton *mapButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, topBar.frame.size.height)];
[mapButton setTitle:@"Map" forState:UIControlStateNormal];
[mapButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[mapButton addTarget:self action:@selector(mapViewToggle:) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:topBar];
[topBar addSubview:mapButton];
- (void)mapViewToggle:(UIButton *)sender
NSLog(@"hello, is it me youre looking for");
@end
【问题讨论】:
【参考方案1】:是的,不行,panelView控制器在这之后被释放
PanelViewController *panelView = [[PanelViewController alloc] init];
你应该在 RootViewController 的 .h 中有一个 var,类似于
@interface RootViewController : UIViewController
PanelViewController *panelView;
然后:
panelView = [[PanelViewController alloc] init];
[self.view addSubview:panelView.view];
【讨论】:
谢谢!这是完全有道理的。我现在已经修复它并且它现在按预期工作:)以上是关于当 UIView 的子视图不起作用时,在 UI Button 上点击方法的主要内容,如果未能解决你的问题,请参考以下文章
使用固定大小的子视图和自动布局调整 UIView 的大小不起作用
LPLinkView backgroundColor 在 iOS 中不起作用
iOS - 界面生成器 - 不继承父视图 alpha 的子视图