我正在使用swipView制作页面滚动应用
根据其SwipeViewDataSource
协议,我制作了一个方法
- (UIView *)swipeView:(SwipeView *)swipeView viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view
{
ContentViewController *contentVC = [[ContentViewController alloc]init];
view = contentVC.view;
return view;
}
提供翻转内容
并且ContentViewController
很简单:
它只有这两种自定义方法:
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(50, 50, 100, 200)];
[btn setTitle:@"click me" forState:UIControlStateNormal];
[btn setBackgroundColor:[UIColor redColor]];
[btn addTarget:self action:@selector(onClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn];
}
-(void) onClick:(id) sender {
NSLog(@"click detected in contentView controller");
}
只在viewDidLoad
中添加了一个按钮,并点击了监听方法
运行应用时,按钮显示,但点击不会触发OnClick:
方法。
在搞清楚之后,我注意到如果我把这个方法
-(void) onClick:(id)sender {
NSLog(@"on click detected main view controller");
}
到实现SwipeViewDataSource
的视图,即在“父”中,将打印ContentViewController
那条调试信息行。
对我来说这很奇怪。我的意思是为什么会这样?
答案 0 :(得分:0)
您的contentviewcontroller将在viewForItemAtIndex委托方法中返回其视图后发布,因为您仅保留其视图。但是你已经将按钮目标添加到已经发布的self(contentviewcontroller)。