我有一个名为MainViewController的UIViewController。我有另一个名为ViewMaker的类。 在ViewMaker类中,我有一个函数如下。
-(UIView *)GetContentView
{
UIView *return_view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 500, 500)];
UIButton *done_button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
done_button.frame = CGRectMake(300, 300, 100, 50);
[done_button setTitle:@"Done" forState:UIControlStateNormal];
[return_view addSubview:done_button];
return return_view;
}
在上面的函数中,我实际上会添加更多的视图,例如textviews,label等。
在MainViewController类中,我调用上面的方法如下。
-(void)CreateViews
{
UIView *content_view = [[[ViewMaker alloc] init] GetContentView];
[self.view addSubview:content_view];
}
现在我已经从MainViewController类添加了一个带有完成按钮的视图(以及其他组件,如textview,标签等)。 我的问题是为完成按钮添加目标函数。当我单击完成按钮时,我想根据从ViewMaker类返回的视图中的数据在MainViewController中执行一些操作(如添加一些视图)。 我怎样才能做到这一点? 提前谢谢。
答案 0 :(得分:1)
我假设您的ViewMaker类与PopupContentMaker相同,
将此添加到完成按钮:
[done_button addTarget:self action:@selector(doSomething) forControlEvents:UIControlEventTouchUpInside];
PopupContenMaker中的:
- (void)doSomething{
if ([self.delegate respondsToSelector:@selector(handleDoneButtonTap)]) {
[self.delegate performSelector:@selector(handleDoneButtonTap) withObject:self];
}
}
在PopupContentMaker中声明一个委托属性,并使MainViewController成为委托,
-(void)GetContentView
{
PopContentMaker *pcm = [[PopupContentMaker alloc] init];
pcm.delegate = self;
[self.view addSubview:[pcm GetContentView]];
}
-(void)handleDoneButtonTap{
//Do action after done button
}
答案 1 :(得分:0)
您可以尝试:
[done_button addTarget: self
action: @selector(buttonClickedMethod)
forControlEvents: UIControlEventTouchUpInside];
通过这种方式,您可以在按下按钮时调用自定义方法。
答案 2 :(得分:0)
您可以将目标和操作作为参数传递给getContentView方法,也可以使用委托模式。